基于nginx结合SSL实现https加密

实验环境:

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进行测试

 

posted @ 2019-09-19 14:06  Joshua¥A¥  阅读(312)  评论(0编辑  收藏  举报