设为首页 收藏本站
查看: 1394|回复: 0

[经验分享] nginx配置https

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-10 09:22:52 | 显示全部楼层 |阅读模式
Nginx+SSL配置Https服务器
1.何为SSL:

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。SSL证书通 过在客户端浏览器和Web服务器之间建立一条SSL安全通

道(Secure socket layer(SSL)安全协 议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认 证;对

传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为 该领域中全球化的标准。由于SSL技术已建立到所有主要

的浏览器和WEB服务器程序中,因此 ,仅需安装服务器证书就可以激活该功能了)。即通过它可以激活SSL协议,实现数据信息在 客户端和服务

器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性, 而且用户可以通过服务器证书验证他所访问的网站是否是真实

可靠。

2.生成SSL证书:

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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-85059-1-1.html 上篇帖子: nginx 源码安装openssl修复Heartbleed漏洞 下篇帖子: Nginx缓存和程序动静分离设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表