Nginx单IP地址配置多个SSL证书的方法

Nginx单IP地址配置多个SSL证书的方法

默认情况下,Nginx一个IP地址仅支持一个SSL证书,需要多个IP地址才能配置多个SSL证书,在公网IP地址有限的情况下,可以使用TLS Server Name Indication extension(SNI, RFC 6066),它允许浏览器在SSL握手的时候发送请求的server name,也就是 Host,这样 Nginx 就能找到对应server 的SSL配置。

配置步骤如下:

1、检查Nginx是否支持TLS

$ nginx -V
...
TLS SNI support enabled
...
2、如果出现TLS SNI support disable,就得升级openssl版本,并且重新编译nginx。

具体步骤如下:

首先下载openssl(建议下载1.0.1h版本)

#wget http://www.openssl.org/source/openssl-1.0.1h.tar.gz

下载Nginx

#wget http://nginx.org/download/nginx-1.9.9.tar.gz

解压openssl

#tar -zxvf openssl-1.0.1h.tar.gz

解压nginx,并编译

#tar -zxvf nginx-1.9.9.tar.gz
#cd nginx-1.9.9
#./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-openssl=../openssl-1.0.1h/
#make && make install

#检查Nginx版本信息

#/usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.9.9
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-55)
built with OpenSSL 1.0.1h 5 Jun 2014
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-openssl=../openssl-1.0.1h/

配置Vhost中的域名证书

server
        {
         #########
                listen 80;
                listen 443 ssl;
                #listen [::]:80;
                server_name we.baohua.me;
                root    /home/wwwroot/we.baohua.me;
 
                ssl on;
                ssl_certificate_key /home/wwwroot/cert/we.baohua.me.key;
                ssl_certificate /home/wwwroot/cert/we.baohua.me.crt;
                ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers HIGH:!aNULL:!MD5;
         ###############
}
然后,重启Nginx即可。

例子2 给Nginx配置一个自签名的SSL证书

下面简单介绍如何创建一个自签名的SSL证书。创建自签名证书需要安装openssl,使用以下步骤:1.创建Key;2.创建签名请求;3.将Key的口令移除;4.用Key签名证书。为HTTPS准备的证书需要注意,创建的签名请求的CN必须与域名完全一致,否则无法通过浏览器验证。以上步骤命令繁琐,所以我做了一个shell脚本,能一次性把证书搞定。从这里下载脚本:https://github.com/michaelliao/itranswarp.js/blob/master/conf/ssl/gencert.sh运行脚本,假设你的域名是www.test.com,那么按照提示输入:$ ./gencert.sh
Enter your domain [www.example.com]: www.test.com         
Create server key...
Generating RSA private key, 1024 bit long modulus
.................++++++
.....++++++
e is 65537 (0x10001)
Enter pass phrase for www.test.com.key:输入口令
Verifying - Enter pass phrase for www.test.com.key:输入口令
Create server certificate signing request...
Enter pass phrase for www.test.com.key:输入口令
Remove password...
Enter pass phrase for www.test.com.origin.key:输入口令
writing RSA key
Sign SSL certificate...
Signature ok
subject=/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=www.test.com
Getting Private key
TODO:
Copy www.test.com.crt to /etc/nginx/ssl/www.test.com.crt
Copy www.test.com.key to /etc/nginx/ssl/www.test.com.key
Add configuration in nginx:
server {
    ...
    ssl on;
    ssl_certificate     /etc/nginx/ssl/www.test.com.crt;
    ssl_certificate_key /etc/nginx/ssl/www.test.com.key;
}
红色部分是输入,注意4次输入的口令都是一样的。在当前目录下会创建出4个文件:•www.test.com.crt:自签名的证书
•www.test.com.csr:证书的请求
•www.test.com.key:不带口令的Key
•www.test.com.origin.key:带口令的Key
Web服务器需要把www.test.com.crt发给浏览器验证,然后用www.test.com.key解密浏览器发送的数据,剩下两个文件不需要上传到Web服务器上。以Nginx为例,需要在server {...}中配置:server {
    ...
    ssl on;
    ssl_certificate     /etc/nginx/ssl/www.test.com.crt;
    ssl_certificate_key /etc/nginx/ssl/www.test.com.key;
}
如果一切顺利,打开浏览器,就可以通过HTTPS访问网站。第一次访问时会出现警告(因为我们的自签名证书不被浏览器信任),把证书通过浏览器导入到系统(Windows使用IE导入,Mac使用Safari导入)并设置为“受信任”,以后该电脑访问网站就可以安全地连接Web服务器了

如何在应用服务器中配置证书呢?例如Tomcat,gunicorn等。正确的做法是不配置,让Nginx处理HTTPS,然后通过proxy以HTTP连接后端的应用服务器,相当于利用Nginx作为HTTPS到HTTP的安全代理,这样即利用了Nginx的HTTP/HTTPS处理能力,又避免了应用服务器不擅长HTTPS的缺点。

时间: 2024-10-23 04:28:28

Nginx单IP地址配置多个SSL证书的方法的相关文章

交换机配置基础:交换机VLAN接口静态IP地址配置

VLAN是为解决以太网的广播问题和安全性而 提出的一种协议,它在以太网帧的基础上增加了VLAN头,用VLAN ID把用户划分为更小的工作组,限制不同工作组间的用户互访,每个工作组就是一个虚拟局域网.下面让我们通过实践来实现交换机VLAN接口静态IP地址配置.一 组网需求:1.SwitchA为三层交换机, PC1和PC2可以通过SwitchA进行互通:2.PC1连接到SwitchA的以太网端口E1/0/1,属于VLAN10:3.PC2连接到SwitchA的以太网端口E1/0/2,属于VLAN20:

远程拷贝、查看端口、vim常见快捷键、查找替换命令、grep命令、查看存储空间的命令、chkconfig命令、系统自动启动级别、主机名配置、IP地址配置、域名映射、防火墙设置

2.1.远程拷贝 (将/export/servers/hadoop上的文件拷贝到bigdate@192.168.1.1:/export/servers/ ) scp –r /export/servers/hadoop bigdate@192.168.1.1:/export/servers/  上面的意思是说将 /export/servers/hadoop 拷贝到192.168.1.1这台服务器下的bigdate用户下的/export/servers/这个文件夹下 2.2.查看端口 netstat

win7通过ip地址查找计算机名的两种方法

  win7通过ip地址查找计算机名的两种方法           解决方法一: 1.通过"开始"菜单,输入cmd,进入到类Dos页面.(也可以通过快捷键:Windows徽标键+R,然后输入cmd,进入到类Dos页面); 2.然后,在该页面,输入ipconfig,然后点击回测键; 3.最后,出现如图所示的页面,从其中的信息即可知道,该电脑的IP地址为192.168.1.123(局域网IP地址). 解决方法二: 1.首先,通过"开始"菜单,输入cmd,进入到类Dos页

Android APP之WebView校验SSL证书的方法

Android系统的碎片化很严重,并且手机日期不正确.手机根证书异常.com.google.android.webview BUG等各种原因,都会导致WebViewClient无法访问HTTPS站点.SSL错误的处理方式十分关键,如果处理不当,可能导致中间人攻击,黑客窃听数据,进而引发安全事故. 严谨地处理onReceivedSslError尤为重要.请参考以下代码,原理是:如果webview报告SSL错误,程序将会对服务器证书进行强校验,如果服务器传入证书的指纹(sha256)与记录值一致,说

Nginx 下配置SSL证书的方法_Linux

1.Nginx 配置 ssl 模块 默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63 ,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模块方法如下: 下载 Nginx 0.7.64 版本,解压 进入解压目录: 复制代码 代码如下: wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz tar zxvf nginx-0.7.64.tar.gz cd nginx-0.7.64 如果要更改heade

网络子系统64_设备ip地址配置

// 相同子网: // 掩码相同,网络地址相同 // 为设备配置ip地址 // 函数主要任务: // 1.合理性检查: // 1.1 相同子网内该地址没有被添加过 // 1.2 相同子网内的地址scope应该相同 // 2.将ifa插入到in_device->ifa_list中 // 3.通知netlink,inetaddr_chain 新地址的加入 // 注:地址在in_device->ifa_list中的排列: // 1.主地址:插入的如果为主地址,则按照scope从大到小的顺序排列 //

nginx配置免费的ssl证书,支持https安全访问

免费ssl证书申请 到 http://www.wosign.com/Products/free_SSL.htm 申请免费的SSL证书. 下载www.iamle.com.zip文件,解压文件,找到for Nginx.zip解压,得到2个文件 1_www.iamle.com_bundle.crt ,2_www.iamle.com.key 改个名字www.iamle.com.crt,www.iamle.com.key传到服务器上备用 Nginx配置SSL证书部署https支持 找到对应的server

linux下nginx配置免费的ssl证书,支持https安全访问

免费ssl证书申请 到 http://www.wosign.com/Products/free_SSL.htm 申请免费的SSL证书. 下载www.111cn.net.zip文件,解压文件,找到for Nginx.zip解压,得到2个文件 1_www.111cn.net_bundle.crt ,2_www.111cn.net.key 改个名字www.111cn.net.crt,www.111cn.net.key传到服务器上备用 Nginx配置SSL证书部署https支持 找到对应的server

Linux系统下修改IP地址、网关、DNS的基本方法

  临时修改IP地址.网关.主机名.DNS,马上生效,无需重启(重启后失效) 1.修改主机名 代码如下: #hostname Slyar 2.修改IP地址(eth0为网卡名称) 代码如下: #ifconfig eth0 192.168.1.5 netmask 255.255.255.0 3.修改默认网关(eth0为网卡名称) 代码如下: #route add default gw 192.168.1.1 dev eth0 4.修改DNS 代码如下: #vim /etc/resolv.conf C