这里nginx搭建https服务器,必须几个要求,第一有安装openssl-devel,当然这个没有貌似编译添加ssl模块会出错。那如果编译有不会的可以参考我前面的博客,当然baidu和google上资料也很多。
1、确认nginx服务器能正常运行
lsof -i:80
#查看80端口是否正常启用,nginx默认80端口而不是443端口
netstat -ntpl | grep nginx | wc -l
ss -ntpl | grep nginx |wc -l
#这也是一种方法,wc -l是统计结果有多少行
2、备份原有的主配置文件
cp nginx.conf nginx.conf.https
3、使用openssl生成不信任的证书和私钥
openssl genrsa -des3 -out https_1.key 2048
#首先创建私钥,会提示输入密码,这个密码一定要备份,如果在生产环境中,知道的人越少越好,因为nginx服务器正常重启停止等操作都要密码。
#genrsa:产生RSA密钥命令,des3:机密解密算法,out:输出的文件名,2048:表示长度也有叫大小的,我还是习惯长度。
openssl req -new -x509 -days 3650 -key https_1.key -out https_1.crt
#利用前面的私钥创建不信任的证书(但好歹也是个证书)
#req:产生证书签发申请命令,-new:表示新的请求,x509签发x.509格式的证书,表示证书有效的天数,key指定私钥文件,out:输出的文件名
4、修改nginx配置文件
注意:以下操作都是在一个server标签里配置的
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 443; server_name localhost; ssl on; ssl_certificate /usr/local/nginx/conf/https_1.crt; ssl_certificate_key /usr/local/nginx/conf/https_1.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
############################################################
listen:监听的端口
server_name:其实就是域名
ssl on:开启ssl
ssl_certificate:表示证书存放的路径,建议用绝对路径
ssl_certificate_key:表示私钥路径,建议用绝对路径
ssl_session_timeout 5m:表示证书在客户机缓存的生命周期,特别提醒下证书是个很贵的东西要保存好。
ssl_protocols SSLv3 TLSv1:证书使用的协议
ssl_prefer_server_ciphers on:SLv3和TLSv1协议的服务器密码需求优先级高于客户端密码(这个我也不清楚,可以肯定的是应该是一个优化参数)
ssl_ciphers HIGH:!aNULL:!MD5:!EXPORT56:!EXP:这个参数我没用,因为不知道怎么用
############################################################
5、重启nginx
/usr/local/nginx/sbin/nginx -s reload
#重启完一定要查看端口情况,因为并不是每一次重启都能成功的。
lsof -i:443
#如果没有说明重启不成功
提示:可以killall nginx后重新启动。防火墙要允许443端口而不是80端口。
6、使用客户机访问,查看结果
vpersoning:如果又出错的地方可以私聊我,我是新手,但是我喜欢问题。
本文出自 “10846118” 博客,请务必保留此出处http://10856118.blog.51cto.com/10846118/1941598
原文地址:http://10856118.blog.51cto.com/10846118/1941598