Nginx+SSL配置Https服务器 nginx
1.何为SSL:redis
SSL证书是数字证书的一种,相似于驾驶证、护照和营业执照的电子副本。SSL证书通 过在客户端浏览器和Web服务器之间创建一条SSL安全通浏览器
道(Secure socket layer(SSL)安全协 议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认 证;对安全
传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为 该领域中全球化的标准。因为SSL技术已创建到全部主要服务器
的浏览器和WEB服务器程序中,所以 ,仅需安装服务器证书就能够激活该功能了)。即经过它能够激活SSL协议,实现数据信息在 客户端和服务session
器之间的加密传输,能够防止数据信息的泄露。保证了双方传递信息的安全性, 并且用户能够经过服务器证书验证他所访问的网站是不是真实socket
可靠。编辑器
2.生成SSL证书:ide
使用openssl工具来生成一个SSL证书, 因为是测试, 因此证书就不设密码了, 若是须要线 上使用的话, 须要向相关机构进行申请购买, 申请工具
证书的具体要求也因颁发商不一样而不一样, 看操
做吧.
首先生成个key文件:
# openssl genrsa -des3 -out ssl.key 1024
<- 1024并非固定的, 会因为要求不一样而不一样
<- ssl.key 是生成的key文件, 以后会用到, 必定保存好
<- 若是须要加密的话, 加参数就能够了, 具体加密方式不列举, 请找man
<- 若是使用加密的话, 会要求输入密码( 这个密码必定要保存好, 往后重启nginx都须要 )
使用key文件, 生成一个csr文件:
# openssl req -new -key ssl.key -out ssl.csr
<- 测试能够一路回车, 若是是正式环境的话, 须要填写之中信息 <- 正式环境的话, 根据需求来填写详细信息
使用csr文件, key文件来颁发证书:
# openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt 此时会在当前目录下生成一个ssl.crt的文件, 这个文件日
后要加到nginx配置文件里
配置Nginx: Nginx开启SSL模块:
Nginx配置Https主机, 必需要开启SSL模块, 若是没有开启的话, 须要从新编译Nginx 使用以下命令, 检查Nginx编译时是否加入了SSL模块的
支持
# ./sbin/nginx -V "查看Nginx版本及编译参数等信息"
nginx version: Apache/2.2.21
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx-1.4.3 --with-http_stub_status_module
--with-http_ssl_module --add-module=nginx-devel-kit --add-module=lua-nginx-module --add-module=echo-nginx-module --add-
module=memc-nginx-module-master --add-module=redis2-nginx-module --add-module=set-misc-nginx-module-master --add-
module=nginx_upstream_check_module
能够看到--with-http_ssl_module, Nginx是开启了Nginx模块支持的, 若是查看Nginx编译参数时候, 没 有找到 ”--with-http_ssl_module
“ 参数, 那么就要从新编译Nginx了, 加上此参数便可
编辑Nginx配置文件:
使用你习惯的编辑器来编辑nginx的配置文件, 在server块添加如下几行:
1 listen 443;
2 ssl on;
3 ssl_protocols SSLv2 SSLv3 TLSv1;
4 ssl_ciphers HIGH:!aNULL:!MD5;
5 ssl_prefer_server_ciphers on;
6 ssl_session_timeout 10m;
7 ssl_certificate /usr/local/nginx-1.4.3/conf/new_ssl/pay.xywy.com.crt;
8 ssl_certificate_key /usr/local/nginx-1.4.3/conf/new_ssl/SSL.KEY;
说明:
第1行: 使Nginx监听443端口
第2行: 开启SSL模块
第3行: 配置SSL支持的协议
第4行: 配置SSL加密方式
第5行: 配置依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
第6行: 配置SSL会话超时时间
第7行: 配置SSL证书, 使用key文件, csr文件签发的证书
第8行: 配置SSL秘钥, 咱们上一步生成的key文件
若是须要将全部http请求跳转到https的话,还须要在80端口的配置文件中添加如下一行
rewrite ^ https://pay.xywy.com$request_uri? permanent;
编辑好配置文件后, 重启Nginx.
ps: 重启Nginx最好stop再start, 不然可能会致使证书不生效, 重启时若是以前创建key文 件时, 使用了加密认证, 那么此时输入建立key文
件时, 输入的密码就能够了
配置时可能会出现的问题及解决方法:
E: 证书不生效
A1: 可能因为Nginx重启的时候使用的是reload, 而不是stop再start
A2: 可能因为配置里面, 一个server同时监听80和443两个端口, 若是说要同时支持http和
https的话, 将两个listen端口写在两个server里面.