nginx实现HTTPS

ssl原理

使用https 通信时,我们在访问web服务器时,返回的数据包进行加密,从而保证数据安全。

https的通信过程:

blob.png

(SSL就是那个服务器的证书,就是访问流程第二步服务器的公钥和私钥)


生产ssl密钥对

(这个自定义的ssl密钥对只能在本机上使用,不能用作在生产环境中)

blob.png

步骤:

1.存放路径: cd /usr/local/nginx/conf/

2.生成key文件为私钥

openssl genrsa -des3 -out tmp.key 2048//生成key文件为私钥(genrsa表示生成rsa格式的私钥,tmp.key为生产文件的名字 ,长度2048)

(安装 openssl (rpm -qf `which openssl `查看该命令是需要那个包) yum install  -y openssl)

blob.png

3./转换key,取消密码

openssl rsa -in tmp.key -out canshenglinux.key //转换key,取消密码 

blob.png

(此时生成的canshenglinux.key和tmp.key是同样的,canshenglinux.key无密码而已)

4.删除有密码的tmp.key

blob.png

rm -f tmp.key

5.生成证书请求文件canshenglinux.csr

 openssl req -new -key canshenglinux.key -out canshenglinux.csr//生成证书请求文件,需要拿这个文件和私钥一起生产公钥文件

执行命令后需要我们定义一系列的内容(自定义即可,也可以不写)

(但是我们是购买的ssl证书,则这个内容需要按购买方案的写入)

blob.png

6.生产公钥文件:canshenglinux.crt

openssl x509 -req -days 365 -in canshenglinux.csr -signkey canshenglinux.key -out canshenglinux.crt

blob.png

(查看生成的文件)

blob.png


   Nginx配置ssl

blob.png

1.生成一个配置文件:

 vim /usr/local/nginx/conf/vhost/ssl.conf

添加内容

server

{

    listen 443;

    server_name cansheng.com;  //服务域名

    index index.html index.php;

    root /data/wwwroot/cansheng.com;///服务域名路径

    ssl on;

    ssl_certificate canshenglinux.crt;  //公钥

    ssl_certificate_key canshenglinux.key;//私钥

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; //定义三个协议

}

blob.png

创建文件:mkdir /data/wwwroot/cansheng.com

cd  /data/wwwroot/cansheng.com

vim index.html (新增一个测试文件)

blob.png


查看配置文件是否有错

 /usr/local/nginx/sbin/nginx -t

blob.png

此时有报错,原因是我们在编译Nginx的时候没有配置SSL参数

所以 在使用nginx时最好在编译的时候把ssl参数配置上再编译

blob.png


重新编译:

查看我们是需要添加ssl的哪个模块:./configure --help |grep -i ssl

blob.png


编译:

1../configure --prefix=/usr/local/nginx --with-http_ssl_module

2.make

(echo $?)

3.make install

(echo $?)

查看加载的模块

 /usr/local/nginx/sbin/nginx -V

blob.png


再次检查配置文件是否有误:

 /usr/local/nginx/sbin/nginx -t

blob.png

4.重庆nginx服务:

/etc/init.d/nginx restart


查看监听端口是否多了一个443

blob.png



测试:

curl -x192.168.136.133:443 https://cansheng.com

使用这种方法测试时不能访问:

blob.png

修改配置文件后可直接访问(不需要加ip:端口)

blob.png

再访问:curl  https://cansheng.com

blob.png

这个时候提示我们的ssl不被信任,但是其实测试已成功。因为我们的ssl证书是自己写的,不合法被服务器web识别。


window浏览器测试:

在hosts文件中增添访问指向域名:c:\windows\system32\drivers\etc


blob.png

然后浏览器地址栏 :https://cansheng.com

(如果访问不到-->查看防火墙(iptables -nvL)有规则的话,

 方法一:清空规则:iptable -F

 方法二:添加443端口规则

)

blob.png访问成功


猜你喜欢

转载自blog.csdn.net/kim_weir/article/details/80552399