MDaemonメヌルサヌバヌのLetsEncrypt蚌明曞の自動曎新段階的な手順



みなさんこんにちは



少し前に、私の良き友人が圌に突然生じた問題で私に近づき、それを解決するための助けを求めたした。 問題はこれでした。圌が働いおいた組織には、Alt-N TechnologiesのMDaemonメヌラヌを備えたWindowsサヌバヌがありたした。 数幎前、StartComのStartSSL SSL蚌明曞がこのメヌラヌにむンストヌルされたした。 そしお、すべおがうたく機胜し、おaskを芁求したせんでした。突然、すべおの蚌明曞が完党か぀無条件のキルディクを受け取るこずを知らせる悲しい手玙がStartComから届きたした。 奜きです、自分を救う-誰ができるか、それが爆撃されるたで。 今日、私たちがどのように救われたかをお䌝えしたす-誰かがこの情報が圹に立぀ず思うでしょう。



いく぀かの歌詞



蚌明曞の眮き換えに぀いお質問するずきに、普通の人が最初に考えるこずは䜕ですか 次の2぀のオプションがありたす。たたは-なぜ買わないのですか たたは-玠晎らしいLet's Encrypt artelがありたす。これは、蚌明曞を巊右に無料で配垃したす。 最初の遞択肢は、前述のようにサヌバヌが機胜しおおり、おridgeを芁求せず、なぜn番目の垞緑のお金を手攟す必芁があるのか​​を経営者に説明したくないずいう事実のために、支払䞍胜ずしお恥ずかしく拒吊されたした。 2番目のオプションは非垞に魅力的でしたが、氎平線に迫るいく぀かの問題がありたしたメヌラヌのりィンドりはLetsEncryptスクリプトずの互換性に぀いおの悲しい考えを瀺唆し、3か月ごずに手動で蚌明曞を受け取っおむンストヌルしたくありたせんでした。



したがっお、2番目のオプションが遞択されたした-蚌明曞を取埗し、それをメヌラヌにバむンドするプロセスを自動化する方法を芋぀ける必芁があるだけです。



もちろん、私たちは、既成の゜リュヌションを探しお、すばらしいむンタヌネットを掘り䞋げるこずから始めたした。 そしお、lo Alt-N Technologiesの勇敢なプログラマヌがすでにこれを凊理し、必芁なすべおを実行するスクリプトを䜜成しおいたこずが刀明したした。 圌らが蚀うように-私の垜子を脱いでください しかし、軟膏にはパがありたした。これらのスクリプトは、すべおの人に配垃されたわけではなく、MDaemonの最新バヌゞョンに含たれおいたした。 ただし、ワヌドサヌバヌには、13.6.3ずいうかなり叀いバヌゞョンのMDaemonが搭茉されおいたした。 この゜フトりェアは完党に合法であり、か぀おは本物のお金で賌入したものの、うたく機胜し、そのアップグレヌドは管理蚈画に含たれおいたせんでした蚌明曞の賌入に関する段萜を参照。



そのため、新しいバヌゞョンのMDaemonから叀いバヌゞョンにスクリプトを倖科的に移怍し、そこで動䜜させるこずを決定したした。 思考-完了MDaemonの最新の詊甚版がその時点で仮想マシンにむンストヌルされ、すべおのコンテンツを含むLetsEncryptフォルダヌが削陀されたした。 これで今䜕をする -以䞋をお読みください。



゜ヌスデヌタ





必須の芁件



この蚘事で説明したように、MDaemonのLetsEncryptスクリプトは完党に普遍的ではなく、次の前提条件を満たす必芁がありたす。





ご芧のずおり、これらの芁件の䞀郚は最初は満たされおいなかったため、WorldClientは最初にIISにバむンドされおポヌト80に転送されたした。これを行う方法に関する情報は、Alt-N Webサむトのこの蚘事から取埗したした。



「熊手」に぀いお䞀蚀



段階的な手順の説明に進む前に、スクリプトの移怍ず蚌明曞の取埗のプロセスを耇雑にする予期しないトラブルに泚意を払いたいず思いたす。



たず、スクリプトのほずんど最初に、「Mdaemon.ini」ファむルの「EnableWCServer」パラメヌタヌが「Yes」に蚭定されおいるこずを確認したした。 そうでない堎合、スクリプトはすぐに終了し、「゚ラヌWorldClientを有効にする必芁がありたす」ずいう重倧な゚ラヌメッセヌゞが衚瀺されたす。 しかし、奇劙なこずに、この堎合、このパラメヌタヌは「いいえ」に蚭定されたした-WorldClientを既にIISにバむンドしおおり、WorldClientはむンタヌネットから完党に開いおいるずいう事実にもかかわらず。 考え盎すこずなく、スクリプトでコメントアりトしおこのチェックをオフにしたした。 これにより、スクリプトは匕き続き動䜜したす。



次に、䌁業サむトが同じサヌバヌ䞊に䜜成され、このサむトの䞀郚のペヌゞぞのアクセスは、自己眲名蚌明曞を䜿甚するhttpsプロトコルを䜿甚しお行われたした。 たた、叀いWindowsサヌバヌは、1぀のIPに添付できる蚌明曞は1぀だけであるず想定しおいたす。 LEからの蚌明曞が既に正垞に取埗されたが、アドレス0.0.0.0にバむンドできなかった堎合、道路の最埌でこのレヌキを螏んだ。 その結果、問題は迅速に、しかし倚少曲がった方法で解決されたしたWorldClientは別のIPアドレスに送信され幞いにも利甚可胜だった、再びスクリプトを線集する必芁がありたした-IPアドレスが入力パラメヌタヌのリストに远加され、バむンドする必芁がありたした蚌明曞。 たた、WorldClientのIISぞのバむンドは既に完党に完了しおいるため、独自のMDaemon WEBサヌバヌを起動せず、すべおをそのたたにしたした。



行こう



パヌト1事前トレヌニング



  1. あなたに知られおいるあらゆる方法で、私たちはサヌバヌを降圧したす
  2. 4.0以䞊の.NETバヌゞョンをむンストヌルしたす。
  3. 圹割サヌビスの远加「コントロヌルパネル」->「管理ツヌル」->「サヌバヌマネヌゞャヌ」->「圹割」に移動し、「圹割サヌビスの远加」リンクをクリックしたす。



    私たちはクリゞキを眮きたす




    • Webサヌバヌ/アプリケヌション開発/ ISAPI拡匵
    • Webサヌバヌ/アプリケヌション開発/ ISAPIフィルタヌ
    • 管理ツヌル/ IIS管理スクリプトおよびツヌル


    [次ぞ]をクリックしたす。
  4. Windows Management Framework 3.0をむンストヌルしたす-これにより、PowerShellバヌゞョン3.0がシステムにむンストヌルされたす必須芁件セクションを参照。

    • Microsoft Webサむトから WMF 3.0 をダりンロヌドしたす。
    • 目的のWMFをむンストヌルしたす。 Windows Server 2008 R2の堎合、これは「Windows6.1-KB2506143-x64.msu」です。
    • サヌバヌを再起動したす。




パヌト2WorldClientサヌバヌにアクセスするIISサむトを䜜成する



泚1 MDaemonに統合されたWorldClientサヌバヌを䜿甚し、すでにポヌト80に排他的に配眮されおいる堎合、このパヌトを安党にスキップしおパヌト3に盎接進むこずができたす。



泚2サむトの 「ホスト名」は、むンタヌネットからアクセスできるMDaemonホストの完党修食ドメむン名ず同じである必芁がありたす。



MDaemonホストの完党なドメむン名を確認するにはMdaemon GUIを起動し、メニュヌに移動したす '蚭定'-> 'プラむマリドメむン/サヌバヌ'-> '既定のドメむンずサヌバヌ'-> 'ドメむン'で、 '完党なホストドメむン名'フィヌルドを確認したす。






それでは始めたしょう。 IISマネヌゞャヌを起動しお、新しいサむトを远加したす。






  1. [サむト名]フィヌルドに、サむトの名前奜きなものを入力したす。
  2. [物理パス]フィヌルドに、ワヌルドクラむアントのHTMLフォルダヌぞのパスを入力したす。
  3. [ホスト名]フィヌルドで、ホストの完党修食ドメむン名を指定したす䞊蚘の泚2を参照。
  4. [IPアドレス]フィヌルドで、むンタヌフェむスが排他的に䜿甚される堎合は[すべお未割り圓お]のたたにするか、メヌラヌに属するIPをリストから遞択したす。
  5. フィヌルド「タむプ」ず「ポヌト」は、それぞれ「http」ず「80」のたたです。


デフォルトのサむト文曞のリストを線集したす-サブセクション「デフォルト文曞」に進みたす。




  1. リスト党䜓をクリアしたす。
  2. ドキュメント「WorldClient.dll」を远加したす。右偎のパネルの「アクション」で「远加...」をクリックし、「名前」フィヌルドに「WorldClient.dll」ず入力したす。
  3. ドキュメント「MDSyncML.dll」を远加したす。右偎のパネルの「アクション」で「远加...」をクリックし、「名前」フィヌルドに「MDSyncML.dll」ず入力したす。
  4. リストの最初に「WorldClient.dll」を蚭定したす。それを遞択し、「アクション」の右ペむンで「䞊に移動」をクリックしたす。


「ハンドラヌマッピング」セクションに移動したす。




  1. 「機胜のアクセス蚱可」の線集右偎のパネルの「アクション」で「機胜のアクセス蚱可の線集...」をクリックし、すべおのkryzhiki-「読み取り」、「スクリプト」、および「実行」を配眮したす。




  2. 「ISAPI-dll」のリストを芋぀けお、それに入りたす。


  3. 「リク゚ストパス」フィヌルドに「WorldClient.dll」ず入力したす。
  4. 「モゞュヌル」リストで、「IsapiModule」を遞択したす。
  5. 「実行可胜オプション」フィヌルドで、WorldClient.dllぞのパスを指定したす。
  6. 新しいハンドラヌを远加したす。右偎のパネルの「アクション」で「モゞュヌルマッピングの远加...」をクリックしたす。


  7. 「リク゚ストパス」フィヌルドに「MDSyncML.dll」ず入力したす。
  8. 「モゞュヌル」リストで、「IsapiModule」を遞択したす。
  9. 「実行可胜オプション」フィヌルドで、MDSyncML.dllぞのパスを指定したす。
  10. 「名前」フィヌルドに明確な䜕かを入力したす。 たずえば、「SyncML-ISAPI」。


「MIMEタむプ」を線集したす-これが行われない堎合、LetsEncryptロボットは拡匵子なしでファむルを受信できたせん。




  1. 「MIMEタむプ」セクションに移動したす。
  2. 「アクション」の右偎のパネルで「远加...」をクリックしたす。
  3. 「ファむル名拡匵子」フィヌルドにポむントを入力したす。
  4. 「MIMEタむプ」フィヌルドに「text / plain」ず入力したす。


サむトの䜜成時に自動的に䜜成される「アプリケヌションプヌル」を線集したす。




  1. [アプリケヌションプヌル]-> [MDaemon WorldClient]-> [詳现蚭定...]に移動したす。
  2. 「プロセスモデル」セクションで、「ID」を「ネットワヌクサヌビス」に倉曎したす。
  3. OSが64ビットの堎合、「䞀般」セクションで「32ビットアプリケヌションを有効にする」を「True」に倉曎したす。


コン゜ヌルを閉じたす。 IISが構成されたす。



次に、ナヌザヌ 'IUSR'および 'NETWORK SERVICE'にMDaemonフォルダヌぞのフルアクセスを蚱可したす。






  1. ゚クスプロヌラに移動し、「MDaemon」フォルダの「プロパティ」フォルダを開き、「セキュリティ」タブに移動しお、「線集」をクリックしたす。
  2. [远加]-> [詳现蚭定]-> [今すぐ怜玢]をクリックしたす-[怜玢結果]のリストでナヌザヌ[IUSR]を遞択し、[OK]をクリックしたす。
  3. 「IUSRのアクセス蚱可」のリストにスグリ「フルコントロヌル」を入れたす。
  4. [远加]-> [詳现蚭定]-> [今すぐ怜玢]をクリックしたす-[怜玢結果]のリストでナヌザヌ[ネットワヌクサヌビス]を遞択し、[OK]をクリックしたす。
  5. 「NETWORK SERVICEのアクセス蚱可」のリストにスグリ「フルコントロヌル」を入れたす。
  6. 「OK」をクリックしお䞡方のりィンドりを閉じたす。


WorldClientが構成されたす。 ホストの完党修食ドメむン名を䜿甚しお、むンタヌネット経由でブラりザにアクセスしお、WorldClientが正垞に開くこずを確認したす。



パヌト3LetsEncryptスクリプトのむンストヌルず構成



  1. ここからスクリプトを䜿甚しおアヌカむブをダりンロヌドし、「MDaemon」フォルダヌのルヌトに解凍したす。 重芁な泚意スクリプトでは、メむンのLetsEncryptサヌバヌがテストサヌバヌに眮き換えられたす。これは、デバッグプロセス䞭に蚌明曞を取埗しようずする繰り返し詊行による犁止を防ぐためです。 次の郚分では、メむンサヌバヌに切り替える方法に぀いお説明したす。
  2. 環境倉数「PSModulePath」のスクリプトで䜿甚されるモゞュヌルぞのパスを远加したす。




    • [コントロヌルパネル]-> [システム]-> [システムの詳现蚭定]-> [詳现]-> [環境倉数]に移動したす。
    • 「システム倉数」のリストで倉数「PSModulePath」を探しおいたす。
    • 「;」で远加 その最埌は、「LetsEncrypt」フォルダヌ内にある「Modules」フォルダヌぞのパスです。 私の堎合、これ 'c\ MDaemon \ LetsEncrypt \ Modules \
    • ログむンしおいたす。
  3. cmdコン゜ヌルを起動したす。
  4. 次のコマンドを䜿甚しお、letsencrypt.ps1スクリプトを実行したす。



    powershell -ExecutionPolicy ByPass -File c:\mdaemon\letsencrypt\letsencrypt.ps1
          
          



    ここで、パラメヌタ「File」はスクリプトぞのパスを蚭定したす。



    远加のパラメヌタヌを䜿甚できたす。

    • -IISSiteName "MDaemon WorldClient"

      WorldClientがIISを介しお動䜜する堎合、このパラメヌタヌを䜿甚しお、スクリプトのWorldClientサむト名を指定する必芁がありたすパヌト2を参照
    • -WCIPAddress xxx.xxx.xxx.xxx

      このパラメヌタヌは、スクリプトが受信した蚌明曞を添付するIPアドレスを蚭定したす。 他の蚌明曞がポヌト443に接続されおいない堎合は、指定する必芁はありたせん。
    • -「admin@server.com」ぞ

      このパラメヌタヌは、゚ラヌが発生した堎合にスクリプトのログが送信される電子メヌルを蚭定したす。


    コン゜ヌルりィンドりを確認したす-スクリプトぱラヌなしで実行されたす。






    䜕かがうたくいかない堎合は、この問題に自分で察凊する必芁がありたす。



    すべおが成功した堎合、httpsプロトコルを䜿甚しおWorldClientブラりザヌにアクセスできたす。LetsEncryptテストサヌバヌを䜿甚したため、ブラりザヌはサむト蚌明曞をメッセヌゞ「SEC_ERROR_UNKNOWN_ISSUER」で呪いたす。



    ちなみに、ファむル 'Mdaemon.ini'のオプション 'EnableWCServer'で "rake"に぀いお話したこずを思い出しおください。IISでバンドルを䜿甚するず、 'No'に蚭定されたす。 そのため、スクリプトを正垞に実行した埌、このパラメヌタヌは「はい」に倉曎されたした。 ただし、これは少し遅れお発生したため、スクリプト内のこのパラメヌタヌの怜蚌に぀いおはコメントしたせんでした。



パヌト4スクリプトを「戊闘モヌド」に倉換する



  1. テキスト゚ディタヌでLetsEncryptフォルダヌのletsencrypt.ps1スクリプトを開きたす。
  2. 次の行を芋぀けたす。



     #Initialize-ACMEVault -ErrorVariable LogText Initialize-ACMEVault -BaseURI https://acme-staging.api.letsencrypt.org/ -ErrorVariable LogText
          
          



  3. 最初の行のコメントを解陀し、2番目の行をコメント化したす。



     Initialize-ACMEVault -ErrorVariable LogText #Initialize-ACMEVault -BaseURI https://acme-staging.api.letsencrypt.org/ -ErrorVariable LogText
          
          



  4. スクリプトを保存したす。


パヌト5「テスト」ラむフの痕跡をすべお削陀する



これを行わない堎合、スクリプトに必芁な倉曎を加えたにもかかわらず、スクリプトは数か月間「停の」蚌明曞を提䟛し続けたす。



  1. MDaemonからテスト蚌明曞を削陀したす。




    • MDaemon GUIを起動し、[セキュリティ]-> [セキュリティ蚭定]-> [SSLTLS]メニュヌに移動したす。
    • 蚌明曞のリストで、テスト蚌明曞を遞択し「送信者」フィヌルドに「Fake LE Intermediate X1」が衚瀺されたす、リストの䞋にある「削陀」ボタンをクリックしたす。
    • 蚌明曞のリストが空になった堎合、自己眲名蚌明曞を䜜成する必芁がありたす。䜜成しないず、りィンドりを閉じようずしたずきにMDaemonが誓いたす。
  2. スクリプトによっお䜜成されたキヌストアを削陀したす。管理者アカりントで䜜業した堎合は「c\ ProgramData \」に移動し、ナヌザヌアカりントで「C\ Users \ username \ AppData \ Local \」に移動し、そこからフォルダヌ「ACMESharp」を削陀したすすべおのコンテンツずずもに。
  3. スクリプトによっお䜜成されたXMLファむルを削陀したす。「MDaemon \ LetsEncrypt」フォルダヌに移動し、そこからLetsEncrypt.XMLファむルを削陀したす。
  4. テスト蚌明曞を削陀したす。「MDaemon \ Pem」フォルダに移動し、そこにある蚌明曞拡匵子「pfx」のファむルを芋぀けお削陀したす。


パヌト6スケゞュヌルされたスクリプトのセットアップ



  1. [コントロヌルパネル]-> [管理ツヌル]-> [コンピュヌタヌ管理]-> [システムツヌル]-> [タスクスケゞュヌラヌ]-> [タスクスケゞュヌラヌラむブラリ]に移動したす。
  2. 新しいタスクを䜜成したす。右偎のパネルの「アクション」で「タスクの䜜成...」をクリックしたす。
  3. 「䞀般」タブで




    • 「名前」フィヌルドに、タスクの名前を曞きたす-オプションでリク゚ストに応じお。
    • 「セキュリティオプション」サブセクションで、「ナヌザヌがログオンしおいるかどうかに関係なく実行する」項目を遞択したす。
  4. [トリガヌ]タブで




    • 「新芏...」ボタンを抌したす-「新芏トリガヌ」りィンドりが開きたす。
    • 「タスクの開始」リストで「スケゞュヌルどおり」を遞択したす。
    • 適切な起動頻床を蚭定したすたずえば、日曜日に週に1回。 スクリプトは、開始するたびに-残りの蚌明曞の量をチェックしたす。1か月未満の堎合は曎新されたす。
  5. [アクション]タブで




    • 「新芏」ボタンを抌したす-「新芏アクション」りィンドりが開きたす。
    • 「アクション」リストで、「プログラムの開始」を遞択したす。
    • 「プログラム/スクリプト」フィヌルドに「powershell」ず入力したす。
    • 「匕数の远加オプション」フィヌルドに「-ExecutionPolicy ByPass -File c\ MDaemon \ LetsEncrypt \ letsencrypt.ps1」ず入力したす。 行の末尟に必芁な远加パラメヌタヌを远加したすパヌト3を参照。
  6. [条件]タブで、グヌズベリヌを裁量で入れたす。
  7. [蚭定]タブで、グヌズベリヌを入れたす。




    • タスクをオンデマンドで実行するこずを蚱可する
    • 1時間以䞊実行されおいる堎合は、タスクを停止したす
    • 芁求されたずきに実行䞭のタスクが終了しない堎合は、匷制的に停止したす
  8. 「OK」ボタンをクリックしたす。 珟圚のナヌザヌのパスワヌドを入力したす。


パヌト7最初の「戊闘」打ち䞊げ



スクリプトを手動で開始したす。



  1. リストで新しく䜜成されたタスクを遞択したす。
  2. 右偎のペむンの「アクション」で「実行」をクリックしたす。 りィンドりは開きたせん。
  3. 時々、タスクリストを曎新しおみたしょう-「ステヌタス」フィヌルドの倉曎を確認するには、「ステヌタス」を「実行」に倉曎する必芁がありたす。 「ステヌタス」が再び「準備完了」になるたでリストを曎新したす。
  4. ログファむル「MDaemon \ Logs \ LetsEncrypt.log」でスクリプトの結果を確認したす。


ログファむルから刀断しお、すべおがうたくいった堎合、ゞョブは完了です-蚌明曞が受信され、安党なチャネルでメヌルの送受信の効率を確認できたす。 そしお、はい、httpsプロトコルを䜿甚しおメヌラヌにログむンするこずを忘れないでください-WorldClientも問題なく動䜜するこずを確認しおください。



パヌトラスト-ファむナル



結論ずしお、蚘事を曞いおいる時点では戊闘サヌバヌにアクセスできなくなっおいたため、スクリヌンショットはすべお、MDaemonのさらに叀いバヌゞョン13.0.4がむンストヌルされおいる仮想マシンから取埗されたため、他のバヌゞョンずは異なりたす。



たあ、それだけです。 私が知っおいたこずはすべお語られたした。 明けたしおおめでずうございたす あなたの健康ず幞運を祈りたす



All Articles