![OSX Server用のget_cert.shスクリプトのCertbotエラーの自動化[閉じる]](https://linux33.com/image/117799/OSX%20Server%E7%94%A8%E3%81%AEget_cert.sh%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AECertbot%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E8%87%AA%E5%8B%95%E5%8C%96%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
現在、Mac OS-X El Capitanシステムでcertbot(またはデフォルトではLetsEncrypt)を実行できません。
私のコンピュータはMac miniでMDMソリューションを実行しており、SSL証明書としてLetsEncryptを使用しているとします。私の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
実際に2倍の問題があります。
まず、証明書を手動で更新できますが、「sudo certbot renew」と入力すると証明書が正常に更新されます。ただし、スクリプトを介してコマンドを実行すると、パラメータエラーがあるというエラーが発生します。
-q/--quiet: 明示的なパラメーター "\r" を無視します。
第二に、opensslをインポートするときにエラーが発生しました。
cert.pemening 入力ファイル /etc/letsencrypt/live/mdm.school.domain cert.pem: そのファイルまたはディレクトリなし g
3番目の問題があり、次のようにエラーが発生します。
Letsencrypt_sslcert.p12: ファイルまたはディレクトリ ve/mdm.school.domain がありませんが、このエラーは 2 番目のエラーに関連しているようです。
私は今混乱しています。ディレクトリが正しく設定されています。必須ファイルの「live」フォルダー内のすべてのファイル(.pemおよび.p12)に0755または0777権限を付与しました。
= sudo certbotを実行すると、私が受け取る証明書は、有効期限が今から89日に設定されることです。証明書パスと秘密鍵パスは、ストレージの場所(/etc/letsencrypt/live/mdm.school.domain/fullchain.pemとprivkey.pem)に対して正しいです。
ところで、ファインダーを使用して確認した結果、ライブフォルダの内容は本質的にアーカイブフォルダへのシンボリックリンクです。
また、アーカイブフォルダへのアクセスに0755権限が付与されていることを確認しました。
答え1
この問題を解決しました。問題は、get-help.shスクリプトファイルの行の末尾にあるキャリッジリターンに関連しています。
MAC OS-Xでファイルに問題があるかどうかを確認する最善の方法は、vimエディタを使用してキャリッジリターンが見つかった行の末尾から^ Mを削除することです。