获取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/letsencryptcd 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;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
