为域名申请HTTPS证书

Posted by hebicheng on March 20, 2019

现在HTTPS越来越来越来越流行,甚至Chrome将非HTTPS站点明显的标记为不安全,所以为自己的域名申请一个HTTPS证书很有必要

HTTPS

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

免费申请HTTPS证书

Fressl 是一个可以申请免费证书的网站。它提供3种品牌的证书:Let's EncryptLet's Encrypt V2TrustAsia, 具体证书的类型和有效时间可以自行去官网查看,我们这里要说的是在申请证书时验证域名的小技巧。
一般有两种验证方式:文件验证和域名验证。
对于域名验证,就是通过给域名解析特定的值来验证(但是我不常用)
第二种是文件验证方法,通过在服务器上配置特定的访问路径来验证。
通过验证后,你就可以下载你的证书和秘钥来为你的域名配置HTTPS了。
这里给大家一个利用nginx配置文件验证的方法,nginx配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
server {
    listen 80;
     ...

    location = /.well-known/pki-validation/fileauth.txt
    {
        default_type text/plain;
        return 200 '201903250003333cpmpl49g1psxj1r86w70mmpi27g61r4f7u2bthwedki0trwtx';
    }
     ...
    
}

这样配置后,通过访问 http://YOUR-IP/.well-known/pki-validation/fileauth.txt 即可访问到你设定的文本。

nginx配置HTTPS

通过nginx配置https很简单, 代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...

 server {
        listen 443; #监听443 端口
        server_name heb1c.cn;
        location = / {
            proxy_pass   http://server1;
        }
   
        ssl on; # 开启ssl
        ssl_certificate /xxx/full_chain.pem; #证书路径
        ssl_certificate_key /xxx/private.key; #秘钥路径    
    }

...

通过以上配置后,重启nginx即可实现HTTPS访问。

原创作品,转载请注明来源 https://hebicheng.github.io