Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34882
  • 博文数量: 6
  • 博客积分: 168
  • 博客等级: 入伍新兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-18 17:32
文章分类
文章存档

2013年(1)

2012年(5)

分类: 服务器与存储

2013-03-11 15:45:23

从证书适用域名个数来分
一个ssl证书都有其对应的域名,从其适用的域名个数来分可以分为单域名、多域名和泛域名证书。顾名思义,单域名证书只能适用于一个域名,多域名证书可以适用于多个域名。而泛域名证书,又称为通配符型(wildcard)证书,可以匹配*.domain.name这种形式。
用通配符证书发布多个安全Web站点,nginx 通配符型证书 不能自己签名做,会出现证书站点不一致错误,需要到CA申请。
测试环境用的是多域名多证书形式,可以解决浏览器警告问题;
查看系统date时间以及时区 确定用CST时区---时区不对 会导致证书不能马上有效。
ln -fs /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
tzselect选择时区
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支持SSL多域名证书的方法需要在openssl加上SNI的支持。
上面说的很清楚openssl从0.9.8f开始编译的时候加上--enable-tlsext,0.9.8j开始这个选项默认是开启的。
编译的时候
一. 编译安装openssl

wget

./config enable-tl***t

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


./configure --prefix=/usr/local/nginx --with-pcre=/home/upload/pcre-8.10 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6  --with-openssl=/www/openssl-1.0.0d----没有编译过的openssl解压目录文件
 make && make install

#备份新安装的配置目录

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

Ok,显示已经支持了TLS SNI.
接下来配置证书了.

进入生产ssl目录,没指定的话是/usr/local/ssl
/bin/openssl genrsa -des3 -out server.key 2048
/bin/openssl req -new -key server.key -out server.csr:这里会要输入一系列信息
/bin/cp server.key server.key.org
/bin/openssl rsa -in server.key.org -out server.key
/bin/openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

配置nginx.conf
server {
        listen       443;
        server_name   ;
        ssl                  on;
        ssl_certificate     /usr/local/ssl/bin/server.crt;
        ssl_certificate_key  /usr/local/ssl/bin/server.key;
        access_log  /www/access_aa.log;
        ssl_session_timeout  5m;
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on;

不同的域名用不同的证书生成,自己签名的证书浏览器会警告。
把服务器生成的server.crt 下载导入到internet>内容>证书》导入 到受信任的根目录证书,下次打开浏览器就不会弹出警告信息。

 

阅读(3791) | 评论(0) | 转发(0) |
0

上一篇:一次innodb数据恢复实例

下一篇:没有了

给主人留下些什么吧!~~