如何使用 LetsEncrypt 证书设置 https?

How do I setup https with a LetsEncrypt certificate?

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

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

此外在上面的 link 上写着

"IMPORTANT: The server needs to be started with the appropriate start-up arguments to consider reloading configuration files, please for more information please see Server Configuration overview."

我点击 link 到服务器配置,但没有看到要添加什么才能安全地导入这些证书。

有人可以告诉我我需要将证书放在哪里吗(这样我就可以自动创建一个 bash 脚本来在密钥过期时为我做这件事)并且 curity 会导入它们?

编辑:我已尝试使用 privkey.pem 和 cert.pem 创建证书。网站现在已经安全了,但我仍然不知道如何通过localfiles导入https证书。

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

如果刷新证书的脚本在同一台机器上运行,您可以使用配置 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 服务器密钥库。

通常有两种类型的证书 - 一种在信任库中,另一种是您拥有存储在密钥库中的密钥的证书。在第一次启动期间,您可以使用受信任的(根)证书(信任库)初始化系统。但是,不支持以这种方式加载密钥库(“私有证书”)。要导入证书和相关密钥,您需要使用 UI、CLI 或 RESTConf API.

配置中有一个额外的部分用于证书和密钥,例如SSL 服务器证书(和密钥)位于 facilities crypto ssl server-keystore 下。此部分中的每个条目都有一个 ID。配置 HTTPS 时,您只需参考密钥库条目的 ID,其中包含应使用的服务器证书。因此,替换 facilities crypto ssl server-keystore 部分中的现有证书。只要 id 保持不变,就不需要进一步更新。特别是,您不需要更改 admin-service http ssl-server-keystore 中的任何内容。 Curity 身份服务器将自动从加密部分获取新证书。

要使用 CLI 导入新证书,您可以创建一个包含更新的密钥库的(临时)config-xml 并通过 CLI 合并它,或者使用请求命令:idsh <<< "request facilities crypto add-ssl-server-keystore id $certificateName keystore $base64EncodedKeystore password $passwordForKeystore".