首页 > 解决方案 > 如何使用 LetsEncrypt 证书设置 https?

问题描述

我正在尝试使用letsencrypt证书在curity服务器上设置https。我想将其自动化,以便在证书过期时,curity 可以读取和使用该新证书(可能无需重新加载。)

目前我无法将证书导入curity。我创建了/etc/init/crypto/signer-truststoresand/etc/init/crypto/ssl-server-truststore目录,并将我的cert.pemintosigner-truststoresfullchain.pemintossl-server-truststore名称复制为mydomain.com.pem. 正如https://curity.io/docs/idsvr/latest/system-admin-guide/crypto/index.html?highlight=https中所述,将证书添加到这些位置,curity 将自动导入它们。

此外在上面的链接上说

“重要提示:服务器需要使用适当的启动参数启动以考虑重新加载配置文件,有关更多信息,请参阅服务器配置概述。”

我单击“服务器配置”的链接,但在任何地方都看不到要添加什么来获得导入这些证书的安全性。

有人可以告诉我我需要将证书放在哪里(以便我可以在密钥到期时自动创建一个 bash 脚本来为我执行此操作),以便 curity 导入它们?

编辑:我尝试使用 privkey.pem 和 cert.pem 创建证书。该网站现在是安全的,但我仍然不知道如何通过本地文件导入 https 证书。

标签: sslhttpscurity

解决方案


您不应重新启动服务器以重新加载新证书。

如果刷新证书的脚本在同一台机器上运行,您可以使用配置 CLI ( idsh),否则使用 RESTConf API 动态配置证书。可以执行此操作的示例脚本如下所示:

#!/bin/bash

set -e

DOMAIN=login.example.com
SERVICE_ROLE=default
PATH=$PATH:$IDSVR_HOME/bin

certbot certonly \
    --agree-tos \
    -d $DOMAIN \
    -n \
    --standalone

XMLFILE=$(mktemp -u /tmp/conf-XXXXXX)
trap "rm -f $XMLFILE" EXIT

KEY=$(cat /etc/letsencrypt/live/$DOMAIN/privkey.pem)
CERT=$(cat /etc/letsencrypt/live/$DOMAIN/cert.pem)

cat <<EOF > $XMLFILE
<config xmlns="http://tail-f.com/ns/config/1.0">
  <facilities xmlns="https://curity.se/ns/conf/base">
    <crypto>
      <ssl>
        <server-keystore>
          <id>letsencrypt-ssl-key</id>
          <keystore>
$KEY
$CERT          
          </keystore>
        </server-keystore>
      </ssl>
    </crypto>
  </facilities>
</config>
EOF

idsh <<< "configure
load merge $XMLFILE
set environments environment services service-role $SERVICE_ROLE ssl-server-keystore letsencrypt-ssl-key
commit"

关于导入的位置,我建议使用 UI 并从 .p12 或 .pem 导入新的 SSL 服务器密钥库。


推荐阅读