タグ: 無料

  • [Synology] グローバルなIP証明書である「 Let’s Encrypt 」取得 – 80, 443ポートが空いているNASでは自動更新は可能 – その他NASへの証明書のインポート方法 と運用方法 [2023/02/25]

    [Synology] グローバルなIP証明書である「 Let’s Encrypt 」取得 – 80, 443ポートが空いているNASでは自動更新は可能 – その他NASへの証明書のインポート方法 と運用方法 [2023/02/25]

    はじめに

    httpsのページとして公開可能にするには、証明書が必要です。そうでないと、「このページはなりすましなどで危険」などとのメッセージがWeb ブラウザに表示されます。

    ちゃんとした会社のホームページでも、このようなメッセージが依然として表示されるサイトが多くありますが、ちゃんとした会社であることを知っていたとしても心配になりますね。

    あと、個人的にSynology NASを使用した写真の共有化やDS NoteなどのInternetを介したアプリを使用する場合も、同様の問題に対する解決策として証明書を取得した方が良いです。

    Let’s Encryptというボランティア団体によって個人でも証明書を取ることができる時代になりました。個人でサイトを立ち上げたのなら、是非、Let’s Encryptの証明書を取得しましょう。

    数ヶ月前(2022)の情報ですが、Let’s Encryptが発行する証明書は、1億通を超えたとありました。

    証明書

    先日、証明書期限がきれるので、Let’s Encryptの更新をマニュアルで実施しました。更新した証明書の期限は、3ヶ月後の日付に更新されていましたが、更新したはずが、WebブラウザのSafariの表示で証明書エラーが出るようになっていました。

    クライアントの証明書エラーが出ているSafariの表示から、証明書の内容を確認してみると、以前の証明書の期限のままの日付を表示していました。

    この現象は、単純に設定のミスです。以下に説明してきましょう。

    Let’s Encrypt 証明書の取得制限

    試行錯誤している内に、何度も証明書を取得(以下の設定)したため、取得制限に引っかかりしたりします。Let’s Encyptには取得数に制限があるためです。この数の紐付けは、登録のemail addressであるため、email addressを変更すると回避できます。

    Let’s Encrypt 申請内容

    以下の項目を申請します。

    • Domain : 例えば: harikiri.diskstation.me
    • Email : <my Email address>
    • Subject Alternative Name : *.harikiri.diskstation.me

    証明書取得後の設定

    設定でツボにハマってしまったら先ず、取得し過ぎた証明書は整理しましょう。必要出ないLet’s Encrypt 証明書は削除します。残しておくと、期限切れの証明書を設定するというミスも起こし易いためです。

    下図を見ながら説明を読んでください。

    1. 1回目の証明書を取得すると、そのNASなどが持っているサーバーのサービス毎に、この証明書が設定されます。
    2. 同様にして2回目の証明書を取得すると、同様に2回目の証明書が、サービス毎に設定されます。
    3. ここで、1回目の証明書の設定(configulation)を開くと、サービス毎に、1回目と2回目のどの証明書を設定するか選択することができます。
    4. すなわち、1回目の証明書の設定の中なのに、そのサービスに対して、2回目の証明書を設定可能であるということです。1回目の証明書の設定をしているのに、2回目の証明書を含めることが出来てしまします。
    5. このことを理解していないと、はりきりのようにつぼにハマってしまいます。

    図の説明:

    証明書の場所は、コントロールセンターのセキュリティ(Security) > 証明書(Certificate)です。

    そこには、取得した回数分の証明書がリストされています。下図の例では、4つが確認できます。

    その内の一番上の証明書を選択状態にして、設定(Settings)をクリックすると、下図のようにダイヤログが表示され、サーバーのサービス毎の証明書をどれにするか、ドロップダウンリストにより設定することができるようになっています。ドロップダウンリストには、全ての取得した証明書が表示されます。

    図の例では、FTPSなどの全てのサービスの証明書(Certificate)は、「harikiri.diskstation.me」に設定されていることが分かります。

    Webブラウザからの確認

    Sarari表示から確認してみると、その証明書は最新のもになっていて解決したことを知ることができます。

    サーバーに最新の証明書を強制的に使用させるには、NASの再起動が必要ですが、自動で再起動しない場合は、マニュアルで鎖再起動させます。

    それでも、以下のように証明書を適切に設定して、サーバーの再起動というダイアログが出て再起動されたとしても、新しい証明書を使用しないことが何回もありました。最後は、NASの再起動により解決することができました。WebブラウザかNAS側か、いずれかは分かりませんが、キャッシャが関わっているものと思われます。

    1. DSM → コントロールパネル → セキュリティ → 証明書から、証明書をセレクトする
    2. 次に、構成(コンフィグレーション)をクリックし、当該NASに設定が必要なサーバーについて、その数だけ以下のように証明書を設定する
    3. コンフィグレーションでの証明書の設定は、証明局(Let’s Encrypt)からの取得、あるいは他のNASからのインポートにより、現に存在する証明書を選択する
    4. 基本的には、すべて同じ証明書を設定した後、「OK」を押すと、サーバーの再起動が開始されて、DSMに戻ってくる。
    5. しかし、このDSMに戻ってきても、ウェブブラウザから接続を試行してみると、以前の古いままの証明書になっていることがある。僕の経験では、ほとんどがそうでした。
    6. そこで、証明書を新しくしたものとして有効にするには、NASの再起動を実施することで、それが可能になります。

    一般的な注意点

    • Synology RouterやNASにLet’s Encrypt証明書を取得する時、及び、自動的に更新させるにはポート80 (及び443)を開けておく必要があります。
    • 当サイトでは、複数のSynology製品があります。RouterとNAS x2 構成なのですが、80と443のポートは、もともとblogサーバーに設定されることが規定されています.更に、証明書の取得および自動更新も、80と443なので必然的にblogサーバーを介して証明書取得とその自動更新が行われることになります.
    • 従って、80/443の設定は1台の装置にしかできないため、その他のネットワーク機器に対して証明書を適用させるためには、取得したblogサーバー用NASの証明書をエクスポートした証明書を使って、その他のNASなどにインポートするマニュアルの方法で対応するしかありません(スクリプトを書けばできるとは思う)。
    • Let’s Encryptにおけるドメイン名に応じた証明書の取得数制限に引っかかった場合、その対処法は、Emailアドレスを変更したり、ドメイン名を変えたり(その場合、必要としているドメイン名をSubject Alternative Nameに設定する)
    • 以上の設定方法の記載は、以下のSynology Siteに説明があります。

    Synology DDNSを使用してSynology SSL VPNとWebVPNを設定する方法 – Synology –

    https://www.synology.com/ja-jp/knowledgebase/SRM/tutorial/VPN/How_to_set_up_Synology_SSL_VPN_and_WebVPN_using_Synology_DDNS_service

    証明書の自動更新がまだ

    証明書の自動更新が有効かを確認します。先ずは、マニュアルによる証明書更新を実施してみます。はりきりの場合、エラーで更新ができませんでした。

    調査した結果、外部アクセス設定で設定していたドメインにエラーが出ていたので、それを解決して、Let’s Encrypt証明書のマニュアルによる更新を行ってみました。その結果、無事に更新することができ3ヶ月先の期限延長を獲得できました。今回まででは、自動更新が可能かどうかは、確認ができていません。できているのは、マニュアル更新のみです。

    以上の詳細として、以下に証明書のマニュアル更新/自動更新ができない時の設定を示した。

    1. Routerは、Internetに繋がっており、DDNS設定で「harikiri.diskstation.me」を設定しており正常である。
    2. Routerの転送ルールには、blog NASに対して、80/443を設定している。
    3. Routerには、blog NASが有線で繋がっている。
    4. blog NASのDDNS設定では、Routerと同じ「harkiri.diskstation.me」を設定していたが、Synologyとの通信でエラーとなっていた。

    マニュアル更新が可能となった設定を以下に示した。

    1. RouterのDDNS設定を削除した。
    2. blog NASのDDNS設定を更新することで、正常に繋がることを確認した。
    3. この状態で、Let’s Encryptのマニュアル更新を実行した。

    設定後の結果

    1. 上記の設定の結果、Let’s Encrypt 証明書(certificate)はマニュアルによる更新が可能となり、この日から3ヶ月先の日付に更新できた。
    2. 証明書の自動更新ができるかどうかの確認は、3ヶ月後に確認する予定。

    まとめ

    DSMのセキュリティ > 証明書 に行き,Let’s Encrypt 証明書を取得する.取得された証明書は,このウィンドウに証明書リストとして追加される.設定タブを選ぶと,NASの各サービスにリストされた証明書のうち,どの証明書を使用するのか設定することができる.すべてをLet’s Encrypt 証明書にしてもいいし,Synologyから取得した証明書を設定してもいい.しかし、この操作がミスを生みやすいので注意して設定すること。Web Serverが再起動して,証明書の再設定が行われる.しかし、再起動しない場合は、強制的に再起動させる。それでもダメなら、NASを再起動させる。

    教訓

    • Synology NASの証明書の設定において、期限切れと表示されている証明書(Let’s Encrypt)は、削除しておくべし。新しい証明書を作成またはインポートして、デフォルトに設定していたとしても、期限切れの証明書を間違えて設定しているなどのミスを起こしやすいため。
    • そもそも、証明書を設定し直すとサーバーが再起動するはずです。再起動がない場合、証明書が更新されていないことを疑う。NASのDMSの不具合の可能性も考える。

    その他情報

    • RT2600ac/RT6600axの証明書の位置
      • コントロールパネル → サービス → 証明書

    編集履歴

    2019/08/08 Mr. Harikiri (blog NAS: DS918+)
    2020/12/31、追記 (教訓)
    2021/02/26、追記 (blogサーバー用NASの証明書(Let’s Encrypt)は自動更新されていたが、80, 443ポートが空いていない、他のNASは自動更新されないので、自動更新された証明書をエクスポートして、それをインポートする運用で対応するしかない)
    2022/11/13、文言整備
    2022/12/20, 追記 (Let's Encryptの自動更新ができるかどうか挙動を確認したが自動更新されず) (証明書の設定)
    2023/02/25, 追記(マニュアルによる証明書の更新がてきないことに気づいた。その原因)、文言整備