nginx配置https



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里面. 

相关文章
相关标签/搜索