获取Let's Encrypt免费证书

Ubuntu 16.04 上获取Let’s Encrypt免费证书
云服务商:阿里云
服务器:针对Nginx服务器;
假设域名:example.com www.example.com
假设IP:137.137.137.137

域名指向IP地址
这时,ping这个域名就会显示IP地址,说明指向成功。

安装Nginx服务器
sudo apt-get install nginx
sudo service nginx start

这里,浏览器里打开example.com,可以显示nginx欢迎界面,说明安装成功;

编辑nginx

$ vi /etc/nginx/sites-available/default

安装letsencrypt

sudo apt-get install letsencrypt #安装不了可以使用下面的方式
git clone https://github.com/letsencrypt/letsencrypt

cd letsencrypt

./certbot-auto --help all

./certbot-auto certonly --standalone --email admin@laozuo.org -d laozuo.org -d www.laozuo.org

签发证书
很简单,直接运行letsencrypt命令即可

sudo letsencrypt certonly --webroot -w /var/www/html -d example.com -d www.example.com

第一次运行时会问你一些你的信息,以后就不会再询问了。

解释一下,certonly是它的子命令,表示只颁发证书。–webroot是它的插件,用于自动验证域名。-w是指定网站的目录,-d是指定目录对应的域名。一个-w后可以跟着多个-d就对应多个域名。可以用多个-w设置多个目录对应不同的域名。这些域名都在一个证书里。

需要注意的是,域名下的.well-know\acme-challenge\目录下的文件必须要可以访问。这个是Let’s Encrypt用于验证域名所有权的。它会在上面-w参数设置的目录下建立临时文件,然后通过HTTP访问,比如上面的设置就会新建诸如/var/www/html/.well-known/acme-chanllenge/xxxxxxx(xxxxxxx是随机字符),然后通过http://example.com/.well-known/acme-chanllenge/xxxxxxx来验证。如果你的网站是纯HTTPS的,你可以用把这个地址重定向到https://example.com/.well-known/acme-chanllenge/xxxxxxx,可以成功通过验证。

看到Congratulations!就代表成功了,下面我们就可以配置Nginx了。

配置HTTP服务器
证书所在的地方是/etc/letsencrypt/下,archive里面是所有证书的存档,`keys 里面是所有证书,不过我们不用管,我们需要的证书在live下面,对应网站域名的目录下面就是了。一共有四个文件。

privkey.pem 这是私匙,对应Nginx的ssl_certificate_key选项,或者Apache2的SSLCertificateKeyFile选项。
cert.pem 服务器证书,这个只有Apache2低于2.4.8版本需要,对应SSLCertificateFile选项。

chain.pem 除服务器证书之外的所有证书,对于1.3.7版以上的Nginx对应ssl_trusted_certificate选项,对于低于2.4.8的Apache2对应SSLCertificateChainFile选项。

fullchain.pem 包括上面的服务器证书和其他证书,Nginx对应ssl_certificate选项,2.4.8版以上的Apache2对应SSLCertificateFile。

所以对于我用的Nginx来说,只需要privkey.pem和fullchain.pem这两个就够了。Apache2的话参考设置HTTPS的文章,对应设置上面提到的文件和选项就行了。

在Nginx的server下设置如下响应的ssl选项就行了,如:/etc/nginx/sites-enabled/example.com

server {
        listen 443 ssl;
        server_name api.imibi.cn;

  			client_max_body_size 4G;
    		client_header_timeout 5000;
    		client_body_timeout 5000;
  
        root /var/www/html;
        index index.html index.nginx-debian.html;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/api.imibi.cn/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/api.imibi.cn/privkey.pem;

        location / {
                try_files $uri $uri/ =404;
          		proxy_pass http://127.0.0.1:5000; #转发到服务器
        }
}

server {
        listen 80;
        server_name api.imibi.cn;

  			client_max_body_size 4G;
    		client_header_timeout 5000;
   	 		client_body_timeout 5000;		
  
        root /var/www/html;
        index index.html index.nginx-debian.html;

        location / {
                try_files $uri $uri/ =404;
				proxy_pass http://127.0.0.1:5000; #转发到服务器          
        }
        rewrite ^(.*)$ https://example.com$1 permanent;
}

设置好了别忘了重启Nginx。

续期

#!/bin/sh
letsencrypt renew
systemctl restart nginx

如果有proxy_set_header,需要先注释掉才能成功

server {        
        listen 80;
        server_name kangear.com www.kangear.com;

        root /var/www/html;
        index index.html index.nginx-debian.html;

        location / {
                #proxy_set_header X-Real-IP $remote_addr;
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                #proxy_set_header Host $http_host;
                #proxy_set_header X-NginX-Proxy true;
                #proxy_pass http://127.0.0.1:8080/;
                #proxy_redirect off;
                #try_files $uri $uri/ =404;
        }
        #rewrite ^(.*)$ https://kangear.com$1 permanent;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值