0

如何在 Jelastic 环境中设置Let's Encrypt SSL?

4

1 回答 1

1

目前,Letsencrypt SSL可以安装在Jelastic 云中的Apache Web 服务器上。要执行后续步骤,您必须以 root 身份登录。

在安装 Letsencrypt 客户端和生成 SSL 证书之前,我们需要在我们的实例上安装两个依赖项。

  1. 安装 EPEL(企业 Linux 的额外软件包)存储库:

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

  1. 我们将在 /opt 下克隆 Let's Encrypt 存储库,这是在 Unix 系统上放置第三方软件的标准目录:git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt 这将在 /opt/letsencrypt 下创建官方 Let's Encrypt 存储库的本地副本。

使用 Let's Encrypt 客户端生成 SSL 证书非常简单。客户端将自动获取并安装对作为参数提供的域有效的新 SSL 证书。

  1. 访问letsencrypt目录:

cd /opt/letsencrypt ;

  1. 要执行交互式安装并获取仅涵盖单个域的证书,请运行letsencrypt-auto 命令:

./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

  1. /etc/httpd/conf.d/modules.conf文件中取消注释“LoadModule ssl_module modules/mod_ssl.so”
  2. 编辑/etc/httpd/conf.d/ssl.conf文件:

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 天的窗口可以每周重试。

  1. 下载脚本并使其可执行。在下载脚本之前,请随意查看脚本的内容。

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 使用哪个域作为您的基本域名,该目录是保存客户端生成的证书的目录。

  1. 我们将编辑 crontab 以创建每周运行此命令的新作业。要为 root 用户编辑 crontab,请运行:

sudo crontab -e

在一行中包含以下内容:

0 0 * * * /usr/local/sbin/le-renew yourdomain.com www.yourdomain.com >> /var/log/le-renew.log

  1. 保存并退出。这将创建一个新的 cron 作业,该作业将在每周一凌晨 2:30 执行 le-renew 命令。该命令产生的输出将通过管道传送到位于/var/log/le-renewal.log 的日志文件。

如果您没有 root 权限,请随时联系我们或所选托管服务提供商的支持团队(单击 Jelastic 仪表板右上角的“帮助”>“联系支持”)。

祝你好运,祝你有美好的一天。

于 2016-03-01T12:08:32.630 回答