ssl - 如何使用 LetsEncrypt 证书设置 https?
问题描述
我正在尝试使用letsencrypt证书在curity服务器上设置https。我想将其自动化,以便在证书过期时,curity 可以读取和使用该新证书(可能无需重新加载。)
目前我无法将证书导入curity。我创建了/etc/init/crypto/signer-truststores
and/etc/init/crypto/ssl-server-truststore
目录,并将我的cert.pem
intosigner-truststores
和fullchain.pem
intossl-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 证书。
解决方案
您不应重新启动服务器以重新加载新证书。
如果刷新证书的脚本在同一台机器上运行,您可以使用配置 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 服务器密钥库。
推荐阅读
- powershell - 如何在powershell中使用invoke-command中的变量?
- java - JOOQ 强制类型将 BigInteger 转换为 BigDecimal 以用于 POSTGRES
- javascript - Angular 身份验证和路由保护
- java - 从时间戳添加 SQL 添加时间
- c# - 如何通过线程或并行扩展提高 foreach 搜索的性能?
- flutter - 如何在 Flutter 中的一个网页(选项卡)中打开多个 BLOB URL?
- java - java - 如何检查'*'是否存在于java中的数组中?
- r - 提取 lmer 随机效应的置信区间;用 dotplot(ranef()) 绘制
- sql-insert - 每当我尝试运行这个 php 文件时,这个文件都会显示错误
- r - 使用 r survsim 包模拟生存数据