运维

Apache配置Let’s Encrypt免费SSL证书

MarginNote 3 - Mac端PDF阅读批注工具 激活码价格:¥69.00
赤友 NTFS for Mac 助手 -  磁盘硬盘格式读写软件注册激活码价格:¥35.00
虫洞 -  iPhone安卓投屏操控 电脑手机多屏协同,价格:¥45.00
namesilo全网最便宜域名注册商,输入折扣码:nsilo20立减1美元!

Apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

Apache配置Let’s Encrypt免费SSL证书

Let’s Encrypt

Let’s Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由网络公益组织ISRG(Mozilla、Cisco、Akamai、IdenTrust、EFF等)组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。

Apache配置Let’s Encrypt免费SSL证书

在部署证书之前,先要做好准备工作,首先是获取Let’s Encrypt免费证书,第二是在Apache服务器上部署SSL证书。

第一,通常获取证书都是需要自主生成的CSR发送给CA机构,下面介绍另一种方法。利用脚本快速获取Let’s Encrypt SSL证书,调用 acme_tiny.py 认证、获取、更新证书,不需要额外的依赖。

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

2、下载到本地:

wget https://raw.githubusercontent.com/xdtianyu/s/master/lets-encrypt/letsencrypt.conf
wget https://raw.githubusercontent.com/xdtianyu/s/master/lets-encrypt/letsencrypt.sh
chmod +x letsencrypt.sh

Let’s Encrypt下载脚本

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

ACCOUNT_KEY=”letsencrypt-account.key”
DOMAIN_KEY=”podipod.com.key”
DOMAIN_DIR=”/var/www/podipod.com”
DOMAINS=”DNS:podipod.com,DNS:www.podipod.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博主的提醒。

Let’s Encrypt配置脚本

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

./letsencrypt.sh letsencrypt.conf

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

Let’s Encrypt生成证书

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.podipod.com.info challenge did not pass: {u’status’: u’invalid’, u’validationRecord’: [{u’url’: u’http://hkh.podipod.com.info/.well-known/acme-challenge/sikHlqvbN4MrWkScgr1oZ9RX-lR1l__Z7FWVLhlYR0Q’, u’hostname’: u’hkh.podipod.com.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等都是没有问题。

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

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

完成上述步骤,即可完成Let’s Encrypt免费SSL证书部署。

(0)

本文由 podipod软库网 作者:DevOps 发表,转载请注明来源!

关键词:, ,
ToDesk - 安全好用流畅远程控制软件 替代TeamViewer,价格:¥108.00
Eagle - 图片收集管理必备软件 激活码价格:¥119.00
PDF Expert 2 - Mac上优秀的PDF阅读编辑工具,价格:¥119.00

热评文章

发表评论