【发布时间】:2016-02-28 19:36:48
【问题描述】:
如何在 Jelastic 环境中设置Let's Encrypt SSL?
【问题讨论】:
-
现在,您可以避免所有手动操作,因为我们借助插件自动化了安装过程,插件可以在市场docs.jelastic.com/marketplace#add-ons 中找到。此外,支持的模板列表也大大扩展。
标签: ssl jelastic lets-encrypt
如何在 Jelastic 环境中设置Let's Encrypt SSL?
【问题讨论】:
标签: ssl jelastic lets-encrypt
目前,Letsencrypt SSL 可以安装在Apache web server 中的Jelastic cloud 上。要执行后续步骤,您必须以 root 身份登录。
在安装 Letsencrypt 客户端和生成 SSL 证书之前,我们需要在我们的实例上安装两个依赖项。
yum -y install epel-release git bc
rpm -ivh https://downloads.hpdd.intel.com/public/e2fsprogs/1.42.12.wc1/el7/RPMS/x86_64/libcom_err-devel-1.42.12.wc1-4.el7.centos.x86_64.rpm
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
这将在 /opt/letsencrypt 下创建官方 Let's Encrypt 存储库的本地副本。使用 Let's Encrypt 客户端生成 SSL 证书非常简单。客户端将自动获取并安装对作为参数提供的域有效的新 SSL 证书。
cd /opt/letsencrypt ;
./letsencrypt-auto --apache -d example.com
如果要安装对多个域或子域有效的单个证书,可以将它们作为附加参数传递给命令。参数列表中的第一个域名将是 Let's Encrypt 用于创建证书的基本域,因此我们建议您将裸顶级域名作为列表中的第一个传递,然后是任何其他子域或别名:
./letsencrypt-auto certonly -d yourdomain.com -d www.yourdomain.com --email youremail@dot.com --webroot -w /var/www/webroot/ROOT --agree-tos
Listen *:443
<VirtualHost *:443>
DocumentRoot /var/www/webroot/ROOT
ErrorLog /var/log/httpd/ssl-error.log
CustomLog /var/log/httpd/ssl-access.log combined
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
SSLOptions +StrictRequire
# Add vhost name to log entries:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/yourdomain.com/chain.pem
`
如果您在首次安装证书时提供了多个域名,则需要再次为续订命令传递相同的域列表,否则 Let's Encrypt 客户端将生成新证书而不是续订现有证书。
确保您的证书不会过时的一种实用方法是创建一个 cron 作业,该作业将自动为您处理续订请求。
为促进此过程,我们将使用一个 shell 脚本来验证所提供域的证书到期日期,并在到期时间不足 30 天时请求续订。该脚本将计划每周运行一次。这样,即使 cron 作业失败,也有 30 天的窗口可以每周重试。
curl -L -o /usr/local/sbin/le-renew http://do.co/le-renew-centos
chmod +x /usr/local/sbin/le-renew
le-renew 脚本将与您要续订的证书关联的基本域名作为参数。您可以通过查看 /etc/letsencrypt/live 中的内容来检查 Let's Encrypt 使用哪个域作为您的基本域名,该目录是保存客户端生成的证书的目录。
sudo crontab -e
在一行中包含以下内容:
0 0 * * * /usr/local/sbin/le-renew yourdomain.com www.yourdomain.com >> /var/log/le-renew.log
如果您没有 root 权限,请不要犹豫contact us 或所选托管服务提供商的支持团队(点击 Jelastic 仪表板右上角的“帮助”>“联系支持”)。
祝你好运,祝你有美好的一天。
【讨论】: