在 get_cert.sh 脚本中为 OSX Server 自动执行 Certbot 错误

在 get_cert.sh 脚本中为 OSX Server 自动执行 Certbot 错误

目前,我的 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。

相关内容