HTTPS实现加密的原理:
客户端向服务端发起SSL连接请求(这是非对称加密的),服务端收到连接请求后向客户端发送公钥,这时客户端收到公钥后,进行对称加密并发送给服务端,最后服务端利用对称秘钥向客户端传输数据。
1、安装OpenSSL
yum -y install openssl
2、进入到/etc/nginx/ssl_key目录下生成key秘钥
mkdir /etc/nginx/ssl_key
cd /etc/nginx/ssl_key
openssl genrsa -idea -out wen.key 1024 #生成一个名为wen.key的秘钥
回车后提示要输入密码,设置的这个密码要记住。
再回车就再输入一次刚刚所设置的密码
输入了两次密码后能看到生成了一个名为wen.key的文件
3、生成csr文件
openssl req -new -key wen.key -out wen.csr #生成一个csr文件
回车后可以随意填写一下信息
遇到 A challenge password []: 这一行的时候可以直接回车,设置空密码
接下来可以一路回车到结束
填完信息结束后,可以看到当前目录里有个wen,csr文件
4、生成crt文件
openssl x509 -req -days 3650 -in wen.csr -signkey wen.key -out wen.crt
回车后输入之前生成key文件时候的密码
输入密码后,当前目录就会生成一个crt文件
5、修改Nginx配置文件
cd /etc/nginx/conf.d
#切换到Nginx配置文件目录
cp default.conf https.conf
#复制一份默认的配置文件并改名为https.conf
vim https.conf
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/nginx/ssl_key/wen.crt;
ssl_certificate_key /etc/nginx/ssl_key/wen.key;
index index.html index.htm
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /opt/https;
}
6、在 /opt/https 目录下创建一个HTML文件
vim /opt/https/ssl.html
<html>
<head>
<meta charset="utf-8">
<title>ssl_key</title>
</head>
<h1>欢迎来到Nginx(ssl_key)</h1>
</body>
</html>
7、关闭Nginx服务
nginx -s stop -c /etc/nginx/nginx.conf
遇到 Enter PEM pass phrase: 则输入刚刚生成key时所设置的密码
8、开启Nginx服务
nginx -c /etc/nginx/nginx.conf
遇到 Enter PEM pass phrase: 则输入刚刚生成key时所设置的密码
9、查看443端口是否开启
netstat -luntp | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 5731/nginx: master
10、在浏览器访问: https://虚拟机的ip/ssl.html