CentOS 使用 OpenSSL 生成自签名证书
一、背景介绍
在现代互联网应用中,HTTPS已经成为确保数据安全传输的基石,通过加密手段,HTTPS能够保护数据免受中间人攻击和窃听,在开发和测试环境中,获取由受信任证书颁发机构(CA)签发的证书可能既不现实也不必要,这时,自签名证书就派上了用场,自签名证书是由证书持有者自己生成并签署的证书,不受任何受信任CA的限制,本文将详细介绍如何在CentOS系统上使用OpenSSL生成自签名证书,并将其部署到Nginx服务器上。
二、前提条件
在进行下面的步骤之前,请确保你的系统已经安装了OpenSSL和Nginx,并且具备管理员权限,如果没有安装这些软件,可以使用以下命令进行安装:
安装OpenSSL:
sudo yum install openssl openssl-devel
安装Nginx:
sudo yum install nginx
三、生成自签名证书
1. 创建目录存储证书文件
我们需要创建一个目录来存储将要生成的证书文件,为了便于管理,建议使用域名或IP地址作为目录名称,我们使用www.example.com
作为目录名:
mkdir -p /etc/ssl/certs/www.example.com cd /etc/ssl/certs/www.example.com
2. 生成私钥
使用OpenSSL生成一个2048位的RSA私钥,并设置密码保护,注意,这里的密码需要至少4位以上:
openssl genrsa -des3 -out server.key 2048
3. 生成证书签名请求(CSR)
生成证书签名请求(CSR):
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=ExampleCorp/OU=IT/CN=www.example.com"
上述命令中的-subj
参数用于填写证书的主题信息,可以根据实际情况进行调整。
4. 去除私钥中的密码
由于每次启动Web服务器时都需要输入密码,这显然不方便,所以我们需要去除私钥中的密码:
openssl rsa -in server.key -out server.key
5. 生成自签名证书
使用私钥签署CSR,生成自签名证书,这里我们将证书有效期设置为10年:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
至此,我们已经生成了以下三个文件:
server.key
:私钥文件
server.csr
:证书签名请求文件
server.crt
:自签名证书文件
四、配置Nginx使用自签名证书
1. 编辑Nginx配置文件
打开Nginx的配置文件,添加SSL相关配置,假设我们的网站根目录为/usr/share/nginx/html
:
sudo vim /etc/nginx/conf.d/ssl.conf
在文件中添加以下内容:
server { listen 443 ssl; server_name www.example.com; ssl_certificate /etc/ssl/certs/www.example.com/server.crt; ssl_certificate_key /etc/ssl/certs/www.example.com/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } }
2. 检查配置文件是否正确
在重启Nginx之前,建议先检查配置文件是否有误:
sudo nginx -t
如果一切正常,你会看到类似如下的输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
3. 重启Nginx服务
重启Nginx以使配置生效:
sudo systemctl restart nginx
五、常见问题及解决方法
Q1:如何验证自签名证书是否生效?
A1:可以通过浏览器访问你的网站,如果使用的是自签名证书,浏览器会显示安全警告,你可以手动添加该证书到受信任的根证书颁发机构中,从而消除警告,具体操作步骤因浏览器而异,但通常可以通过点击警告信息中的“查看证书”按钮来完成。
Q2:如何更新自签名证书?
A2:当你的自签名证书即将到期时,你需要重新生成一个新的证书,可以按照上述步骤重新生成新的私钥、CSR和自签名证书,然后在Nginx配置文件中更新相应的路径即可,记得在生成新证书之前备份旧的证书文件以防万一。
六、小编有话说
通过本文的学习,我们学会了如何在CentOS系统上使用OpenSSL生成自签名证书,并将其部署到Nginx服务器上,虽然自签名证书不适合生产环境,但在开发和测试阶段却非常有用,希望这篇文章对你有所帮助!如果你有任何疑问或建议,欢迎在评论区留言讨论。