免费ssl证书申请 letsencrypt 申请流程 letsencrypt 使用教程

admin 懒人文摘免费ssl证书申请 letsencrypt 申请流程 letsencrypt 使用教程已关闭评论字数 8925阅读模式

免费ssl证书申请 letsencrypt 申请流程 letsencrypt 使用教程

免费SSL证书Let’s Encrypt安装使用教程:Apache和Nginx配置SSL

WordPress为所有博客启用HTTPS加密,采用Let’s Encrypt证书

Automattic 宣布采用电子前沿基金会(EFF)的「Let’s Encrypt」项目,为所有 WordPress.com 用户提供其自定义域名的免费 HTTPS 加密服务,这意味着所有 WordPress.com 博客用户将可用上由 Let’s Encrypt 签发的免费 SSL 证书。

此前要为托管在 WordPress.com 的博客安装 SSL 证书并提供 HTTPS 支持,网站所有者必需与 Automattic 支持人员联系获取支持。现在 Automattic 已经支持使用 wordpress.com 的主域证书为子域(例如 username.wordpress.com)进行加密,用户自定义域名也可获得 Let’s Encrypt SSL 证书支持。

Automattic 之所以选择 Let’s Encrypt 也不是什么奇怪的事情,因为它一向都很支持开源软件、互联网隐私并坚定地站在了反政府监控的立场上。

根据上月公布的 EFF 统计,Let’s Encrypt 已为全球网站所有者签发超过 100 万张 SSL 证书。与此同时, EFF 也曾暗示很可能会对 Let’s Encrypt 项目进行更名。

免费ssl证书申请 letsencrypt 申请流程 letsencrypt 使用教程

免费SSL证书Let’s Encrypt安装使用教程:Apache和Nginx配置SSL  原文地址

免费ssl证书申请 letsencrypt 申请流程 letsencrypt 使用教程

Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS,目前Facebook等大公司开始加入赞助行列。

Let's Encrypt已经得了 IdenTrust 的交叉签名,这意味着其证书现在已经可以被Mozilla、Google、Microsoft和Apple等主流的浏览器所信任,你只需要在Web 服务器证书链中配置交叉签名,浏览器客户端会自动处理好其它的一切,Let's Encrypt安装简单,未来大规模采用可能性非常大。

Let's Encrypt虽然还在测试当中,但是市场需求非常大,已经有非常多的朋友迫不及待地安装并用上了Let's Encrypt。Let's Encrypt向广大的网站提供免费SSL证书,不管是对于网站站长、互联网用户,还是对整个Web互联网,都是非常有利的,它有利于整个互联网的安全。

本篇文章就来为大家讲解一下如何获取Let's Encrypt免费SSL证书,并附上Apache和Nginx的SSL证书配置方法。

免费SSL证书Let's Encrypt安装使用教程:Apache和Nginx配置方法

一、 安装Let's Encrypt免费SSL准备

1、Let's Encrypt官网:

官方网站:https://letsencrypt.org/

项目主页:https://github.com/letsencrypt/letsencrypt

2、安装Let's Encrypt脚本依赖环境:(这一部分可以跳过,因为官方提供的Let's Encrypt脚本会自动检测并安装)

# Debianapt-get install git# CentOS 6yum install centos-release-SCL && yum updateyum install python27scl enable python27 bashyum install python27-python-devel python27-python-setuptools python27-python-tools python27-python-virtualenvyum install augeas-libs dialog gcc libffi-devel openssl-devel python-develyum install python-argparse# CentOS 7yum install -y git python27yum install -y augeas-libs dialog gcc libffi-devel openssl-devel python-develyum install python-argparse

3、查看自己的VPS主机到底是安装了哪个操作系统版本,可以执行命令:cat /etc/issue 或者 cat /etc/redhat-release。

1450678163835

二、获取Let's Encrypt免费SSL证书

1、获取Let's Encrypt免费SSL证书很简单,你只需要执行以下命令,就会自动在你的VPS上生成SSL证书和私钥。

git clone https://github.com/letsencrypt/letsencryptcd letsencrypt./letsencrypt-auto

2、经过部落测试,上述代码对于Debian系统支持最好,可以完成自动检测并安装相应的软件。如果你是使用其它的Linux系统,Redhat或CentOS 6可能需要配置EPEL软件源,Python需要2.7版本以上。

1450678163365

3、执行上述命令后,会弹出对话框,同意用户协议。

1450678163502

4、接着会提示让你关闭Nginx或者Apache。

1450678233522

5、Let's Encrypt需要用到80和443端口,所以你需要关闭那些占用这两个端口的应用。

1450678233400

6、当你看以下内容时,就表明你的Let's Encrypt免费SSL证书获取成功了。

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at   /etc/letsencrypt/live/freehao123.org/fullchain.pem. Your cert will   expire on 2016-03-09. To obtain a new version of the certificate in   the future, simply run Let's Encrypt again. - If like Let's Encrypt, please consider supporting our work by:   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate   Donating to EFF:                    https://eff.org/donate-le

7、见下图:

1450678233514

三、利用脚本快速获取Let's Encrypt SSL证书

1、嫌上面的麻烦,不妨来试试利用脚本快速获取Let's Encrypt SSL证书,调用 acme_tiny.py 认证、获取、更新证书,不需要额外的依赖。

1、项目主页:https://github.com/xdtianyu/scripts/tree/master/lets-encrypt

2、下载到本地:

wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.confwget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.shchmod +x letsencrypt.sh

1450678233598

3、配置文件。只需要修改 DOMAIN_KEY DOMAIN_DIR DOMAINS 为你自己的信息

ACCOUNT_KEY="letsencrypt-account.key"DOMAIN_KEY="freehao123.com.key"DOMAIN_DIR="/var/www/freehao123.com"DOMAINS="DNS:freehao123.com,DNS:www.freehao123.com"

4、本脚本在Debian下运行正常,但是如果你使用的是CentOS,你还需要修改letsencrypt.sh中openssl.cnf的位置,先找到你的CentOS的openssl.cnf位置。然后打开letsencrypt.sh,将路径/etc/ssl/openssl.cnf替换为你的新路径,例如/etc/pki/tls/openssl.cnf。

PS:20151214更新,该脚本已经更新,现在不需要对CentOS的openssl.cnf进行修改了。感谢ty博主的提醒。

1450678233858

5、执行过程中会自动生成需要的 key 文件。运行:

./letsencrypt.sh letsencrypt.conf

6、注意需要已经绑定域名到 /var/www/www.freehao123.com 目录,即通过 http://freehao123.com http://www.freehao123.com 可以访问到 /var/www/freehao123.com目录,用于域名的验证。

1450678233764

7、正常按照上面的操作即可成功获取到Let's Encrypt SSL证书,不过经过部落测试最大的问题就是“DNS query timed out”,由于域名DNS解析的问题导致无法验证域名从而获取SSL证书不成功。

Traceback (most recent call last): File "/tmp/acme_tiny.py", line 198, in main(sys.argv[1:]) File "/tmp/acme_tiny.py", line 194, in main signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca) File "/tmp/acme_tiny.py", line 149, in get_crt domain, challenge_status))ValueError: hkh.freehao123.info challenge did not pass:

{u'status': u'invalid', u'validationRecord':

[{u'url': u'http://hkh.freehao123.info/.well-known/acme-challenge/

sikHlqvbN4MrWkScgr1oZ9RX-lR1l__Z7FWVLhlYR0Q', u'hostname':

u'hkh.freehao123.info', u'addressUsed': u'', u'port': u'80',

u'addressesResolved': None}],

u'https://acme-v01.api.letsencrypt.org/acme/challenge/

5m1su6O5MmJYlGzCJnEUAnvhweAJwECBhEcvsQi5B2Q/1408863', u'token':

u'sikHlqvbN4MrWkScgr1oZ9RX-lR1l__Z7FWVLhlYR0Q', u'error':

{u'type': u'urn:acme:error:connection', u'detail': u'DNS query timed out'}, u'type': u'http-01'}

8、经过对比发现,国内的DNSPOD、阿里云DNS、CloudXNS等都会出现Let's Encrypt 验证域名超时的情况

国外的Namecheap DNS、Linode DNS、Domain.com DNS等都是没有问题。

1450678233189

四、 Ngnix配置Let's Encrypt免费SSL

1、注意查看你的Let's Encrypt免费SSL证书保存位置,一般是在/etc/letsencrypt/live/freehao123.com这样的下面。

1450678287446

2、fullchain.pem就是公钥,privkey.pem就是私钥。有了这两个文件我们就可以在Ngnix上配置SSL证书了。OneinStack一键工具在创建虚拟主机时可以选择为网站配置SSL。

1450678287805

3、如果有用OneinStack,那么最简单的方法就是用fullchain.pem和privkey.pem替代原来生成的CRT和Key文件

这样做的好处就可以保留Ngnix配置的SSL证书路径,只要简单修改引用的公钥和私钥即可。

1450678287591

4、当然,为了后面的操作方便,我们建议保留Let's Encrypt生成的SSL证书,直接在网站的配置中修改SSL证书引用路径。使用VPS主机创建网站时会为网站生成一个.conf文件。

1450678287806

5、这个这个.conf文件,直接替换掉ssl_certificate和ssl_certificate路径即可,如下图:

1450678287502

6、OneinStack的Nginx配置SSL证书代码示例:

server {
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/freehao123.org/fullchain.pem;//改动地方1
ssl_certificate_key /etc/letsencrypt/live/freehao123.org/privkey.pem;//改动地方2
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-SHA384:ECDHE-RSA-:ECDHE:!DES:!3DES:!MD5:!DSS:!PKS;
ssl_session_cache builtin:1000 shared:SSL:10m;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
server_name www.freehao123.org freehao123.org;
access_log /data/wwwlogs/www.freehao123.org_nginx.log combined;
index index.html index.htm index.php;
include /usr/local/nginx/conf/wordpress.conf;
root /data/wwwroot/www.freehao123.org;
if ($host != www.freehao123.org) {
    rewrite ^/(.*)$ $scheme://www.freehao123.org/$1 permanent;
    }
server {
listen 80;
server_name www.freehao123.org;
rewrite ^/(.*) https://$server_name/$1 permanent;
}

7、最后重启Nginx,打开浏览器就可以看到SSL证书已经成功配置好了。

1450678287111

8、对于安装了LNMP的朋友,可以参考以下代码修改自己的Nginx配置。

server
{
listen 443 ssl;
//如果需要spdy也可以加上,lnmp1.2及其后版本都默认支持spdy,lnmp1.3 nginx 1.9.5以上版本
默认支持http2 server_name www.freehao123.com; //域名 index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/www.freehao123.com; //网站目录 ssl_certificate /etc/letsencrypt/live/www.freehao123.com/fullchain.pem; //前面生成的证书 ssl_certificate_key /etc/letsencrypt/live/www.freehao123.com/privkey.pem; //前面生成的密钥 ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; include wordpress.conf; //这个是伪静态 #error_page 404 /404.html; location ~ [^/]\.php(/|$) { # comment try_files $uri =404; to enable pathinfo try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; //lnmp 1.0及之前版本替换为include fcgi.conf; #include pathinfo.conf; }

五、Apache配置Let's Encrypt免费SSL

1、首先,我们需要对Apache的配置进行修改,打开 /usr/local/apache/conf/httpd.conf ,查找httpd-ssl将前面的#去掉,然后执行命令(注意将路径换你自己的):

    cat >/usr/local/apache/conf/extra/httpd-ssl.conf<<EOF
    Listen 443
    AddType application/x-x509-ca-cert .crt
    AddType application/x-pkcs7-crl .crl
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    SSLProxyCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    SSLHonorCipherOrder on
    SSLProtocol all -SSLv2 -SSLv3
    SSLProxyProtocol all -SSLv2 -SSLv3
    SSLPassPhraseDialog builtin
    SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
    SSLSessionCacheTimeout 300
    SSLMutex "file:/usr/local/apache/logs/ssl_mutex"
    EOF

2、接着,在你创建的网站的Apache配置的最后</VirtualHost>下面添加上SSL部分的配置文件:

<VirtualHost *:443>
DocumentRoot /home/wwwroot/www.freehao123.com   //网站目录
ServerName www.freehao123.com:443   //域名
ServerAdmin [email protected]      //邮箱
ErrorLog "/home/wwwlogs/www.freehao123.com-error_log"   //错误日志
CustomLog "/home/wwwlogs/www.freehao123.com-access_log" common    //访问日志
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.freehao123.com/fullchain.pem   //之前生成的证书
SSLCertificateKeyFile /etc/letsencrypt/live/www.freehao123.com/privkey.pem    //之前生成的密钥
<Directory "/home/wwwroot/www.freehao123.com">   //网站目录
SetOutputFilter DEFLATE
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>

3、最后就是重启Apache,然后打开浏览器就可以看到SSL证书配置成功了。

1450678287807

六、 Let's Encrypt免费SSL证书续期

1、Let's Encrypt免费SSL证书有效期是90天,也就是每三个月你就得续期一次。采用官方的方法获取到的免费SSL证书,

你不需要更改Apache和Nginx配置代码,执行以下代码即可自动替换证书为新的(注意修改域名和邮箱):

./letsencrypt-auto certonly --renew-by-default --email [email protected]
-d freehao123.org -d www.freehao123.org

2、采用上面脚本快速获取Let's Encrypt免费SSL证书的,在90天内再次执行命令即可:./letsencrypt.sh letsencrypt.conf。

1450678287694

3、cron 定时任务。每个月自动更新一次证书,可以在脚本最后加入 service nginx reload等重新加载服务。

0 0 1 * * /etc/nginx/certs/letsencrypt.sh /etc/nginx/certs/letsencrypt.conf >>
/var/log/lets-encrypt.log 2>&1

七、Let's Encrypt免费SSL证书使用小结

Let's Encrypt免费SSL证书获得方式比较简单,不管采用何种方式,只要能够得到证书和密钥,

我们就可以在自己的服务器上配置好SSL。上面讲到了Apache和Nginx的配置方法

如果你有自己的虚拟主机面板,可以直接通过后台添加证书和私钥文件即可。

1450678287681

免费ssl证书申请letsencrypt 申请流程 letsencrypt 使用教程 

 
admin
  • 本文由 admin 发表于 2016年4月11日 18:25:05
  • letsencrypt 使用教程
  • letsencrypt 教程
  • letsencrypt 申请流程
  • 免费ssl证书申请