如何使用 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-truststores
和 fullchain.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"
.
我正在尝试使用 letsencrypt 证书在 curity 服务器上设置 https。我想将其自动化,以便当证书过期时 curity 可以读取和使用该新证书(可能无需重新加载。)
目前我无法将证书导入curity。我创建了 /etc/init/crypto/signer-truststores
和 /etc/init/crypto/ssl-server-truststore
目录,并将我的 cert.pem
复制到 signer-truststores
和 fullchain.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"
.