使用https 通信时,我们在访问web服务器时,返回的数据包进行加密,从而保证数据安全。
https的通信过程:
(SSL就是那个服务器的证书,就是访问流程第二步服务器的公钥和私钥)
生产ssl密钥对
(这个自定义的ssl密钥对只能在本机上使用,不能用作在生产环境中)
步骤:
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)
3./转换key,取消密码
openssl rsa -in tmp.key -out canshenglinux.key //转换key,取消密码
(此时生成的canshenglinux.key和tmp.key是同样的,canshenglinux.key无密码而已)
4.删除有密码的tmp.key
rm -f tmp.key
5.生成证书请求文件canshenglinux.csr
openssl req -new -key canshenglinux.key -out canshenglinux.csr//生成证书请求文件,需要拿这个文件和私钥一起生产公钥文件
执行命令后需要我们定义一系列的内容(自定义即可,也可以不写)
(但是我们是购买的ssl证书,则这个内容需要按购买方案的写入)
6.生产公钥文件:canshenglinux.crt
openssl x509 -req -days 365 -in canshenglinux.csr -signkey canshenglinux.key -out canshenglinux.crt
(查看生成的文件)
Nginx配置ssl
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; //定义三个协议
}
创建文件:mkdir /data/wwwroot/cansheng.com
cd /data/wwwroot/cansheng.com
vim index.html (新增一个测试文件)
查看配置文件是否有错
/usr/local/nginx/sbin/nginx -t
此时有报错,原因是我们在编译Nginx的时候没有配置SSL参数
所以 在使用nginx时最好在编译的时候把ssl参数配置上再编译
重新编译:
查看我们是需要添加ssl的哪个模块:./configure --help |grep -i ssl
编译:
1../configure --prefix=/usr/local/nginx --with-http_ssl_module
2.make
(echo $?)
3.make install
(echo $?)
查看加载的模块
/usr/local/nginx/sbin/nginx -V
再次检查配置文件是否有误:
/usr/local/nginx/sbin/nginx -t
4.重庆nginx服务:
/etc/init.d/nginx restart
查看监听端口是否多了一个443
测试:
curl -x192.168.136.133:443 https://cansheng.com
使用这种方法测试时不能访问:
修改配置文件后可直接访问(不需要加ip:端口)
再访问:curl https://cansheng.com
这个时候提示我们的ssl不被信任,但是其实测试已成功。因为我们的ssl证书是自己写的,不合法被服务器web识别。
window浏览器测试:
在hosts文件中增添访问指向域名:c:\windows\system32\drivers\etc
然后浏览器地址栏 :https://cansheng.com
(如果访问不到-->查看防火墙(iptables -nvL)有规则的话,
方法一:清空规则:iptable -F
方法二:添加443端口规则
)
访问成功