如何配置免费的 https?

admin 22天前 38


https 能大大提高数据传输过程中的安全性,iOS App Store 要求所有的接口请求都必须为 https,https 势在必行,今天我就给大家介绍下如何一个上午搞定 https 。


什么是 https ?

http + SSL (非对称加密协议)= https,不懂的搜索下 RSA 非对称加密。


什么是证书?

所谓的证书其实就是公钥,这个是分发给用户的(由浏览器使用)。私钥存放在服务器上。


知道以上概念后,我们开始一步步进入实际操作环节,配置免费的 https:


1. 申请证书:

阿里云有免费的证书申请:

2. 选择免费证书



3. 补全资料



4. 选择 DNS 验证,验证后会提交审核大概需要一个小时左右。

5. 进入域名的管理中心,解析域名设置,增加域名的一条 TEXT 记录解析,TEXT的值请参考邮件和提示:


6. 下载证书(包含2个文件,xxx.key, xxx.pem)解压后,上传到服务器,并且根据自己的喜好,改一下名字,以 nginx 为例。
1
2
3
4
5
6
[root@xiuno cert]# pwd
/usr/local/nginx/conf/cert
[root@xiuno cert]# ll
total 8
-rw-r--r-- 1 root root 1675 Jul 19 14:54 bbs.xiuno.com.key
-rw-r--r-- 1 root root 3884 Jul 19 14:54 bbs.xiuno.com.pem

xxx.key 是公钥,最后要分发给用户浏览器的,xxx.pem 是私钥存放于服务器,千万不要泄露。


7. 配置 nginx,按照以下格式进行修改,开启  443 端口,并将 80 请求跳转到 443。
server {  
        listen  80;  
        server_name bbs.xiuno.com;  
        rewrite ^(.*)$  https://$host$1 permanent;  
 
server {
        listen       443 ssl;
        server_name bbs.xiuno.com;
        ssl on;
        ssl_certificate      cert/bbs.xiuno.com.pem;
        ssl_certificate_key  cert/bbs.xiuno.com.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        index index.html index.htm index.php;
        root  /home/xxxxxx;
        access_log  /home/xxxxx.log;
         ....
}


另外一种配置方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server
{
        listen       80;
        listen       443;
        server_name  bbs.xiuno.com;
        set $flag 0;
        if ( $request_method ~* "GET" ) { set $flag "${flag}1"; }
        if ( $server_port = "80" ) { set $flag "${flag}2"; }
        #if ( $request_method ~* "GET" && $server_port = '80' )
        if ( $flag = "012" )
        {
                rewrite ^(.*)$  https://$host$1 permanent;
        }
        ssl on;
        ssl_certificate      cert/bbs.xiuno.com.crt;
        ssl_certificate_key  cert/bbs.xiuno.com.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
         
        ...
 }


8. 重启 nginx 服务,搞定。

service nginx restart


最新回复 (1)
全部楼主
  • admin 22天前
    引用 2
    http://bbs.xiuno.com/thread-18004.htm
返回
发新帖