HCRM博客

如何在 CentOS 系统中生成和管理 SSL/TLS 证书?

在CentOS系统中,证书管理是确保系统安全性和数据传输完整性的重要环节,无论是通过自签名证书进行内部测试,还是使用由受信任的证书颁发机构(CA)签发的证书来保护外部通信,了解如何在CentOS上安装、配置和管理证书都是至关重要的,以下是对CentOS证书管理的全面解析:

一、CentOS证书基础概念

1、证书与密钥

如何在 CentOS 系统中生成和管理 SSL/TLS 证书?-图1
(图片来源网络,侵权删除)

证书:数字证书是一种电子文档,用于在网络上证明您的身份,它包含公钥、持有者的信息(如组织名称、域名等)、颁发机构的信息以及颁发机构的数字签名。

密钥:通常指私钥,与公钥成对出现,用于非对称加密,私钥必须保密,而公钥可以公开。

2、证书类型

自签名证书:由自己生成并签名的证书,适用于内部测试或不需要第三方验证的场景。

CA证书:由受信任的证书颁发机构签发的证书,具有更高的可信度和安全性。

二、安装与配置证书

1、安装OpenSSL工具

如何在 CentOS 系统中生成和管理 SSL/TLS 证书?-图2
(图片来源网络,侵权删除)

OpenSSL是一个强大的开源工具包,用于实现安全套接字层(SSL)和传输层安全(TLS)协议的功能,在CentOS上,可以通过以下命令安装OpenSSL:

     yum install openssl y

2、生成自签名证书

生成带密码的私有密钥:

     openssl genrsa des3 out server.key rand 0x1000000000000000000

移除密码保护(如果需要):

     openssl rsa in server.key out servernopass.key

使用私钥生成自签名证书:

     openssl req new x509 key servernopass.key out server.crt days 3650

将证书转换为PFX格式(可选):

如何在 CentOS 系统中生成和管理 SSL/TLS 证书?-图3
(图片来源网络,侵权删除)
     openssl pkcs12 export out server.pfx in server.crt inkey servernopass.key

3、导入CA证书

将CA证书复制到指定目录:

     cp /path/to/cacert.crt /etc/pki/catrust/source/anchors/

更新系统的证书:

     updatecatrust forceenable

三、使用Let’s Encrypt自动申请与部署证书

1、安装Certbot工具

Certbot是一个用于与Let’s Encrypt交互的客户端,可以自动化申请、续签和部署证书的过程,首先安装EPEL库和Certbot:

     yum install y epelrelease
     yum install y certbot

2、申请证书

使用Certbot命令初次申请证书,指定Web站点目录和域名:

     certbot certonly webroot w /usr/local/nginx/html d demo.hangge.com m service@hangge.com agreetos

申请成功后,证书将保存在/etc/letsencrypt/live/<your_domain>/目录下。

3、配置Nginx使用Let’s Encrypt证书

编辑Nginx配置文件,将HTTPS server配置前面的注释去掉,并指定证书文件路径:

     server {
         listen       443 ssl;
         server_name  demo.hangge.com;
         ssl_certificate      /etc/letsencrypt/live/demo.hangge.com/fullchain.pem;
         ssl_certificate_key  /etc/letsencrypt/live/demo.hangge.com/privkey.pem;
         ...
     }

4、自动续签与部署

Let’s Encrypt证书的有效期为90天,因此需要设置自动续签,可以使用Certbot自带的renewal脚本或将其添加到cron定时任务中:

     certbot renew dryrun
     # 或者添加到crontab中,每月1号执行一次续签并重启Nginx服务
     crontab e
     # 添加以下行到crontab文件中
     00 05 01 * * /usr/bin/certbot renew quiet && /bin/systemctl restart nginx

四、常见问题及解答(FAQs)

Q1: 如何验证证书是否安装成功?

A1: 可以使用OpenSSL命令行工具来验证证书的有效性,要检查服务器上的证书链是否正确,可以使用以下命令:

openssl s_client connect your_domain:443 showcerts

这将显示服务器发送给客户端的所有证书信息,包括根证书、中间证书和服务器证书,如果所有证书都正确无误,则表示证书安装成功。

Q2: 如果Let’s Encrypt证书续签失败怎么办?

A2: 如果Let’s Encrypt证书续签失败,可能是由于多种原因造成的,如DNS解析问题、服务器配置错误或网络连接问题,检查Certbot日志文件以获取更多错误信息:

tail f /var/log/letsencrypt/letsencrypt.log

根据日志中的错误信息进行相应的排查和修复,如果问题依然存在,可以尝试手动续签证书或联系Let’s Encrypt支持团队寻求帮助,确保服务器时间准确且与UTC同步,因为Let’s Encrypt依赖于准确的时间戳来验证证书的有效性。

分享:
扫描分享到社交APP
上一篇
下一篇