Nginx支持多域名ssl证书

导读:

昨天凌晨将公司旗下的另外一个域名也升级成通过ssl证书登录的形式,那里料到过程竟然非常曲折,原因是nginx如果编译的时候使用openssl如果没有添加enable-tl***t参数的话,就只支持一个ssl证书,因此要让nginx支持多域名证书就必须要重新编译openssl和nginx。

详细过程:

升级更改完nginx配置文件以后,使用/usr/local/nginx/sbin/nginx  -t测试配置文件没有问题,就采用/usr/local/nginx/sbin/nginx  -s reload重新加载配置文件,输入新域名的https访问竟然出现错误证书的提示,左键点击证书错误,选择查看证书,发现用的是另外一个域名的证书。反复检查后错误依旧。心中转念一想:是不是nginx只支持一个证书?带着这个问题,在baidu和google上搜索了一下,还真的是这个问题,要让nginx支持多证书,nginx必须支持TLS SNI,使用命令/usr/local/nginx/sbin/nginx  -V查看,服务器的查看结果如下:

nginx version: nginx/1.0.12

TLS SNI support disabled

configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module

很明显,不支持TLS SNI,需要重新编译openssl和nginx。

接下来我们详细叙述一下能让nginx支持多域名证书的过程,主要分为如下两个大步骤:编译安装openssl和编译安装nginx(nginx平滑升级,不影响业务)。

一、编译安装openssl

wget http://www.openssl.org/source/openssl-0.9.8l.tar.gz

tar zxvf ./openssl-0.9.8l.tar.gz

cd ./openssl-0.9.8l

#编译的时候需要加上enable-tl***t参数

./config enable-tl***t

make

make install

二、编译安装nginx(nginx平滑升级)

tar xzvf nginx-1.0.12.tar.gz

cd nginx-1.0.12

#备份原来的nginx配置

mv /usr/local/nginx /usr/local/nginx_old

#安装nginx

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module  --with-http_stub_status_module --with-openssl=../openssl-0.9.8l/

make;make install

cd /usr/local/nginx

#备份新安装的配置目录

mv conf conf_bak

mv logs logs_bak

#拷贝原来的配置文件目录

cp -ar /usr/local/nginx_old/conf .

cp -ar /usr/local/nginx_old/logs .

#测试配置文件

/usr/local/nginx/sbin/nginx -t

#查找nginx主进程

ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'

#执行切换操作

kill -USR2 912

kill -WINCH 912

kill -QUIT 912

安装完成使用/usr/local/nginx/sbin/nginx  -V查看一下是否支持TLS SNI,检测如下:

nginx version: nginx/1.0.12

TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-openssl=../openssl-0.9.8l/

Ok,显示已经支持了TLS SNI,在输入https访问,终于能显示正确的证书了! 注意目前如果使用xp上的IE去访问的话还是会提示证书有问题,因为xp上任何版本的IE都不支持TLS SNI。

这里说下Linux 系统怎么通过openssl命令生成 证书。

  首先执行如下命令生成一个key
  openssl genrsa -des3 -out ssl.key 1024
  然后他会要求你输入这个key文件的密码。不推荐输入。因为以后要给nginx使用。每次reload nginx配置时候都要你验证这个PAM密码的。
  由于生成时候必须输入密码。你可以输入后 再删掉。

mv ssl.key xxx.key
  openssl rsa -in xxx.key -out ssl.key
   rm xxx.key
   然后根据这个key文件生成证书请求文件
   openssl req -new -key ssl.key -out ssl.csr
   以上命令生成时候要填很多东西 一个个看着写吧(可以随便,毕竟这是自己生成的证书)

最后根据这2个文件生成crt证书文件
   openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
    这里365是证书有效期 推荐3650哈哈。这个大家随意。最后使用到的文件是key和crt文件。

如果需要用pfx 可以用以下命令生成
    openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx

在需要使用证书的nginx配置文件的server节点里加入以下配置就可以了。
   ssl on;
   ssl_certificate /home/ssl.crt;
   ssl_certificate_key /home/ssl.key;
   ssl_session_timeout 5m;
   ssl_protocols SSLv2 SSLv3 TLSv1;
   ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
   ssl_prefer_server_ciphers on;
    然后重启nginx就大功告成了

自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书相关推荐

  1. linux系统自签发免费ssl证书,为nginx生成自签名ssl证书

    安装nginx可参考: nginx重新编译支持ssl可参考: 接下来手动配置ssl证书: 自己手动颁发证书的话,那么https是不被浏览器认可的,就是https上面会有一个大红叉 下面是手动颁发证书的 ...

  2. 离线部署nginx到redhat/centos,从安装环境到部署dist包全家桶(附带生成自签名SSL证书)

    一.准备nginx环境 先检查gcc .PCRE .zlib.openssl.nginx是否已经安装. gcc version rpm -qa pcre yum list installed | gr ...

  3. 生成自签名ssl证书

       一般情况下,如果能找到可用的证书,就可以直接使用,只不过会因证书的某些信息不正确或与部署证书的主机不匹配而导致浏览器提示证书无效,但这并不影响使用. 需要手工生成证书的情况有: 找不到可用的证书 ...

  4. Liunx环境下生成自签名免费(SSL)私有证书

    1.生成加密自签名(SSL)证书 使用命令: openssl req -new -x509 -newkey rsa:2048 -keyout /data/server.key -out /data/s ...

  5. https 自签名SSL证书

    介绍 TLS或称传输层安全性,及其前身SSL(代表安全套接字层)是用于将正常流量包装在受保护的加密包装中的Web协议. 使用这种技术,服务器可以在服务器和客户端之间安全地发送流量,而不会被外部各方拦截 ...

  6. 自签名SSL证书的安全隐患和风险

    自签名SSL证书,是指不受信任的任意机构或个人,使用工具自己签发的SSL证书.有一些公司或者个人出于成本的考虑,会选择使用自签名SSL证书.一旦使用这种随意签发的.不受监督.信任的证书,就很容易被黑客 ...

  7. mongodb生成自签名证书以及配置SSL以及mongo集群搭建(亲测有效)版本-5.0.6

    @[TOC](mongodb生成自签名证书以及配置SSL(亲测有效) 版本-5.0.6 一直以来都是向大神学习,今天也做回大神分享,哈哈!!几个小时的努力不算白费. 一.自签名证书生成 1.生成根证书 ...

  8. 网络安全--keytool CA签名SSL证书(收费)

    本文主要介绍keytool CA签名SSL证书(收费),点击查看keytool自签名SSL证书(免费)以及私钥签名.公钥验签流程 最近给银行做一个系统,虽说是给行内使用的,但是系统要同时支持内外网方式 ...

  9. Nginx的安全控制及SSL加密介绍

    Nginx的安全控制 关于web服务器的安全是比较大的一个话题,里面所涉及的内容很多,Nginx反向代理是如何来提升web服务器的安全呢? 安全隔离 什么是安全隔离? 通过代理分开了客户端到应用程序服 ...

最新文章

  1. SpringBoot源码分析之@Scheduled
  2. java编写脚本校验修改密码_java编写一个更改密码校验程序,有两个密码框,一个用于输入新密码,另一个请输入确认密码……...
  3. Python学习笔记《Python核心编程》第4章Python对象
  4. Backpropagation 总结
  5. npm run dev 报错echarts
  6. explicit关键字详解(C++ )
  7. 系统设计知识:系统模块结构设计知识笔记
  8. 【noip模拟赛4】Matrix67的派对 暴力dfs
  9. oracle获取序列并赋值,Oracle中序列的使用
  10. 贝叶斯方法(Bayesian approach) —— 一种概率解释(probabilistic interpretation)
  11. 大数据笔试面试问题之分治法解决
  12. 你还在 Docker 中跑 MySQL?恭喜你,好下岗了!
  13. 语法分析分析器的实现
  14. 微服务设计简单实践---从一个简单需求学习微服务思想
  15. Springboot毕业设计毕设作品,黑白图片大全和AI智能上色系统
  16. C primer Plus 9.3.4 递归和倒序计算 DE3
  17. 解决SELECT list is not in GROUP BY clause and contains nonaggregated column ‘XXX’
  18. eclipse启动慢?试试如下操作
  19. 创业失败后的他们,是怎么找工作的?
  20. 容器和LXC简单命令

热门文章

  1. Qt的基本控件——显示控件
  2. BibTex使用笔记
  3. c++实现推箱子游戏(带链表)
  4. CSS——网页的布局方式
  5. 6张图!5G六大细分领域产业图谱
  6. if [ $# -ne 1 ] 作用
  7. 原来高手是这样练成的
  8. 企业logo添加到word的模板制作
  9. 5. 统计学基础2:协方差、相关系数、协方差矩阵
  10. 支持向量机 一 :线性支持向量机介绍