篇七:SSL证书

备注:修改为xx/,使用时注意替换

 

一、原理

  参考资料:

    1、SSL证书发展历程:xx/basic/ssl_history.htm

    2、数字证书基础知识:xx/basic/index.htm

  整理:

    SSL证书作用:传输信息加密、网站身份验证。

        传输信息加密:SSL协议是 NetScape 公司于 1994 年提出的一个关注互联网信息安全的信息加密传输协议,其目的是为客户端(浏览器) 到服务器 端之间的信息传输构建一个加密通道,此协议是与操作系统和 Web 服务器无关。同时, NetScape 在 SSL协议中采用了主流的加密算法(如: DES 、AES 等) 和采用了通用的PKI加密技术;

        网站身份验证:

          超快:只验证域名所有权的 SSL证书,而不要求提供营业执照并验证,这种 SSL证书只能起到加密作用,而不能起到最关键的真实身份认证的作用。而更糟糕的是:这种 SSL证书(超快SSL)在浏览器中同超真SSL证书一样显示一样的安全锁标志,只要仔细查看证书主题才能发 现:超快SSL 不显示单位名称(只显示域名),而超真SSL 则显示单位名称。但一般用户是不会查验证书详细信息的,只是在浏览器中看到有安全锁就以为安全了;

          超真:安全锁标志,显示单位名称;

          超安:让用户使用 IE7 或其他新版浏览器访问此网站时,其地址栏是绿色的,而地址栏右边的安全状态栏会循环显示此网站所属的单位名称和颁发此证书的证书颁发机构,如下图所示,绿色表示此网站的身份是经过严格的身份验证的,而其他 SSL 证书则仍然显示一般的白色:

             

 

            

二、推荐使用沃通

  1、注册账号:https://login.xx/.com/reg.html

  2、下载、安装证书;

  3、登录

  4、注册域名,绑定IP,可以使用阿里域名

  5、购买证书

 

三、绑定nginx

  学习网址:https://zhangge.net/4861.html

       xx//Docdownload/Nginx%20SSL%E8%AF%81%E4%B9%A6%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97.pdf

  1、安装nginx,并安装( –with-http_ssl_module )ssl

yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
tar -zxvf nginx-1.6.2.tar.gz
cp -rf nginx-1.6.2 /usr/local/nginx
cd /usr/local/nginx/
./configure --prefix=/usr/local/nginx -–with-http_ssl_module --with-http_stub_status_module
make && make install 
vi /etc/sysconfig/iptables
>> -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# service iptables restart
检查配置文件:/usr/nginx/sbin/nginx -t
平滑重启:/usr/nginx/sbin/nginx -s reload
关闭:ps -ef|grep nginx 查看进程        
kill -9 进程
启动:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

  如果nginx已经安装后加入ssl

1.看下编译安装nginx的时候,都编译安装的哪些模块。
[root@zabbix ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx
 
2.进入之前下载并解压了的源码包目录;重新编译nginx
[root@zabbix nginx-1.8.0]# cd /usr/local/src/nginx-1.8.0
[root@zabbix nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
[root@zabbix nginx-1.8.0]# make
▲这一步千万不能 make install ;不然会把之前已经安装的nginx 覆盖掉
 

3.需要替换nginx二进制文件,先停止掉nginx进程;备份一下原来的启动脚本。
[root@zabbix nginx-1.8.0]# /etc/init.d/nginx stop

[root@zabbix nginx-1.8.0]# cp /etc/init.d/nginx /etc/init.d/nginx.bak
 
[root@zabbix nginx-1.8.0]# cp objs/nginx /usr/local/nginx/sbin/
cp: overwrite `/usr/local/nginx/sbin/nginx'? yes
 
4.查看nginx的模块,看下是否把需要的模块编译进去了
[root@zabbix ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
 
5.重新启动nginx;
[root@zabbix nginx-1.8.0]# /etc/init.d/nginx start
Starting Nginx:                                            [  OK  ]

[root@zabbix nginx-1.8.0]# netstat -lnp|grep nginx  //查看是否正常监听80端口

 

四、配置证书

  参考:https://zhangge.net/4861.html

  1、获取证书

     a、成功在沃通申请证书后,会得到一个有密码的压缩包文件,输入证书密码后解压得到五个文件:for Apache、for IIS、for Nginx、for Other Server,         这个是证书的几种格式,Nginx 上需要用到 for Nginx 格式的证 书

     b、解压后看到两个文件,"cert"是公钥,"key"是私钥

 

  2、配置--HTTP和HTTPS共存  

server {
       listen 80;
       #新增监听443端口,并指定443为ssl:
       listen 443 ssl;
       server_name yourdomain.com;
       #新增ssl配置---开始:
       ssl_certificate /usr/local/nginx/ssl/yourdomain_bundle.crt; #证书公钥文件路径
       ssl_certificate_key  /usr/local/nginx/ssl/yourdomain.key;   #证书私钥文件路径
       ssl_session_timeout  5m;  #5分钟session会话保持
       ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers  HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
       #新增ssl配置---结束:
       location / {
                 #其他规则保持不变
        }
   }

  3、配置--强制HTTPS

server{
      listen 80;
      server_name yourdomain.com;
      root  /path/for/yourdomain.com;
      location / {
          rewrite (.*) https://yourdomain.com$1 permanent;
      }
   }
 
 server {
       listen 443;
       server_name yourdomain.com;
       ssl on;
       ssl_certificate /usr/local/nginx/ssl/yourdomain_bundle.crt; #证书公钥文件路径
       ssl_certificate_key  /usr/local/nginx/ssl/yourdomain.key;   #证书私钥文件路径
       ssl_session_timeout  5m;
       ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers  HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
       location / {
                 #其他规则维持不变
        }
   }

  4、HTTP和HTTPS各有部分--详情查看参考

 

posted @ 2016-10-12 15:33  刘广平  阅读(174)  评论(0)    收藏  举报