工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆

Nginx支持多域名ssl证书

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

一、编译安装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

二、编译安装nginxnginx平滑升级)

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就大功告成了

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):