目前,我的 Mac OS-X El Capitan 机器在运行 certbot(或基本上 LetsEncrypt)时遇到问题。
我的机器是 Mac mini,据说正在运行 MDM 解决方案,并使用 LetsEncrypt 作为其 SSL 证书。我的 MDM 工作正常,我只想通过 certbot 自动更新 SSL 证书。
我按照本指南进行了整个设置 - Joshua Jung,Medium.com - 将 mac mini OSX 设置为 MDM
这是我的脚本文件 - get-cert.sh
#!/bin/sh
DOMAIN="mdm.school.domain"
PEM_FOLDER="/etc/letsencrypt/live/${DOMAIN}/"
# Renew the certificate
# sudo certbot renew --quiet # old way, didn't work.
# new way below -
# sudo certbot renew —-cert-name ${DOMAIN} -q
# Generate a passphrase
echo starting password
PASS=$(openssl rand -base64 45 | tr -d /=+ | cut -c -30)
echo finish password - looks like no problem.
# Transform the pem files into a p12 file
echo start openssl
sudo openssl pkcs12 -export -inkey "${PEM_FOLDER}privkey.pem" -in "${PEM_FOLDER}cert.pem" -certfile "${PEM_FOLDER}fullchain.pem" -out "${PEM_FOLDER}letsencrypt_sslcert.p12" -passout pass:$PASS
echo end openssl
# Import the p12 file into the keychain
echo start security import
sudo security import "${PEM_FOLDER}letsencrypt_sslcert.p12" -f pkcs12 -k /Library/Keychains/System.keychain -P $PASS -T /Applications/Server.app/Contents/ServerRoot/System/Library/CoreServices/ServerManagerDaemon.bundle/Contents/MacOS/servermgrd
echo end security import
实际上我有 2x 问题。
首先,虽然我可以手动续订证书,这意味着如果我输入“sudo certbot renew”,证书就会成功续订。但是,如果我通过脚本运行该命令,则会出现错误,指出存在参数错误。
-q/--quiet:忽略显式参数“\r”。
其次,我在 openssl 导入时遇到错误,错误显示:
cert.pemening 输入文件 /etc/letsencrypt/live/mdm.school.domain cert.pem:没有这样的文件或目录g
我确实有第三个问题,错误发生如下 -
Letsencrypt_sslcert.p12:没有这样的文件或目录ve/mdm.school.domain,但我认为此错误与第二个错误有关。
我现在很困惑。我已经正确设置了目录。我已将“live”文件夹中所需文件的 0755 或 0777 权限授予所有文件(.pem 和 .p12)。
当我运行 = sudo certbot 证书时,我得到的信息是到期日期设置为 89 天后。证书路径和私钥路径对于存储位置正确 - /etc/letsencrypt/live/mdm.school.domain/fullchain.pem 和 privkey.pem
话虽如此,正如我使用查找器检查的那样,实时文件夹的内容本质上是指向存档文件夹的符号链接。
我还确保存档文件夹访问权限被授予 0755 权限。
答案1
我已经解决了这个问题。该问题与 get-help.sh 脚本文件行尾的回车有关。
确定我的文件在 MAC OS-X 中是否存在问题的最佳方法是使用 vim 编辑器并删除找到回车符的行末尾的 ^M。