实验环境:
1.首先确保机器已安装nginx服务
rpm -q nginx
2.关闭防火墙及Linux安全机制
systemctl stop firewalld.service
iptables -F
setenforce 0
3.使用nginx -V命令查看nginx是否支持ssl
查看 configure arguments 信息中是否包含 -with-http_ssl_module 字样,如果没有则需要重新编译安装。
1)创建证书索引数据库文件
touch /etc/pki/CA/index.txt
2)指定第一个颁发证书的序列号
echo 01 > /etc/pki/CA/serial
1)生成CA私钥
cd /etc/pki/CA
umask 066
openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
2) 生成CA自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem (回到根目录下)
-new: 生成新证书签署请求
-x509: 专用于 CA 生成自签证书
-key: 生成请求时用到的私钥文件
-days n:证书的有效期限
-out: 证书的保存路径
输入命令后会提示输入国家,省,市,公司名称,部门名称,CA主机名(颁发者名称)等信息。
*需要注意的是,此次书写的各个名称必须与下面的证书文件相同,避免证书无效
颁发证书
1)在根目录下创建一个名为key的目录
mkdir key
2)生成web服务器私钥
cd key/
umask 066
openssl genrsa -out key/service.key 2048
3) 生成CA证书申请文件
openssl req -new -key service.key -out service.csr
输入与之前相同的信息,密码可以不设置,其他必须相同!
4)创建服务目录
mkdir /etc/pki/CA/csr
mv service.csr /etc/pki/CA/csr
openssl ca -in /etc/pki/CA/csr/service.csr -out /etc/pki/CA/certs/service.crt -days 365
提示是否继续,输入y或yes都可以
5)修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
添加以下内容:
server {
listen 443 ssl;
server_name nginx.nihao.com;
ssl_certificate /etc/pki/CA/cacert.pem;
ssl_certificate_key /etc/pki/CA/private/cakey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
添加完可以查看语法是否正确
nginx -t
报错的话进入文件排查错误
确认无误后,重启服务即可
killall -HUP nginx
在浏览器中进行测试
须使用https进行测试