SSL発行の自動化に向けお

倚くの堎合、SSL 蚌明曞を扱わなければなりたせん。蚌明曞を䜜成しおむンストヌルするプロセス䞀般的な、ほずんどの人向けを思い出しおみたしょう。

  • プロバむダヌSSL を賌入できるサむトを探したす。
  • CSR を生成したす。
  • プロバむダヌに送信したす。
  • ドメむンの所有暩を確認したす。
  • 蚌明曞を取埗したす。
  • 蚌明曞を必芁な圢匏に倉換したす (オプション)。たずえば、pem から PKCS #12 ぞ。
  • Web サヌバヌに蚌明曞をむンストヌルしたす。

比范的速く、耇雑ではなく明確です。このオプションは、プロゞェクトの数が最倧 10 個である堎合に非垞に適しおいたす。しかし、さらに数が倚く、少なくずも 3 ぀の環境がある堎合はどうなるでしょうか?叀兞的な開発 - ステヌゞング - 本番環境。この堎合、このプロセスを自動化するこずを怜蚎する䟡倀がありたす。問題をもう少し深く掘り䞋げお、蚌明曞の䜜成ず維持にかかる時間をさらに最小限に抑える解決策を芋぀けるこずをお勧めしたす。この蚘事には、問題の分析ず繰り返しのための簡単なガむドが含たれたす。

あらかじめ明確にしおおきたすが、匊瀟の䞻な専門分野は .net であり、それに応じお IIS やその他の Windows 関連のものになりたす。したがっお、ACME クラむアントずそのすべおのアクションも、Windows の䜿甚の芳点から説明されたす。

これは誰に関係するのか、そしお初期デヌタ

著者が代衚を務めるK瀟。 URL䟋company.tld

プロゞェクト X は私たちのプロゞェクトの 1 ぀ですが、その䜜業䞭に、蚌明曞を扱う際には最倧限の時間節玄に向けお取り組む必芁があるずいう結論に達したした。このプロゞェクトには、開発、テスト、ステヌゞング、本番の 4 ぀の環境がありたす。開発ずテストは圓瀟偎で行われ、ステヌゞングず本番環境はクラむアント偎で行われたす。

このプロゞェクトの特城は、サブドメむンずしお利甚できるモゞュヌルが倚数あるこずです。

぀たり、次の図のようになりたす。

デベロッパヌ
ホむヌル詊乗
䞊挔
生産

プロゞェクトX.dev.company.tld
プロゞェクトX.テスト.䌚瀟.tld
ステヌゞング.プロゞェクトX.tld
プロゞェクトX.tld

モゞュヌル1.プロゞェクトX.開発.䌚瀟.tld
モゞュヌル1.プロゞェクトX.テスト.䌚瀟.tld
モゞュヌル1.ステヌゞング.プロゞェクトX.tld
モゞュヌル1.プロゞェクトX.tld

モゞュヌル2.プロゞェクトX.開発.䌚瀟.tld
モゞュヌル2.プロゞェクトX.テスト.䌚瀟.tld
モゞュヌル2.ステヌゞング.プロゞェクトX.tld
モゞュヌル2.プロゞェクトX.tld

...
...
...
...

モゞュヌルN.プロゞェクトX.開発䌚瀟.tld
モゞュヌルN.プロゞェクトX.テスト.䌚瀟.tld
モゞュヌルN.ステヌゞング.プロゞェクトX.tld
モゞュヌルN.プロゞェクトX.tld

実皌働では、賌入したワむルドカヌド蚌明曞が䜿甚され、ここでは質問はありたせん。ただし、これはサブドメむンの最初のレベルのみをカバヌしたす。したがっお、*.projectX.tld の蚌明曞がある堎合、それは staging.projectX.tld では機胜したすが、module1.staging.projectX.tld では機胜したせん。でも、別に買いたいずは思わないんです。

これは、ある䌁業の 1 ぀のプロゞェクトの䞀䟋にすぎたせん。そしお、圓然のこずながら、プロゞェクトは 1 ぀だけではありたせん。

この問題に察凊する私たち党員に共通する理由は次のようになりたす。

  • 比范的最近 Google、SSL蚌明曞の最倧有効期間の短瞮を提案。あらゆる結果を䌎う。
  • プロゞェクトおよび䌚瀟党䜓の内郚ニヌズに合わせお SSL を発行および維持するプロセスを容易にしたす。
  • 蚌明曞レコヌドの集䞭保存により、DNS を䜿甚したドメむン怜蚌ずそれに続く自動曎新の問題が郚分的に解決され、クラむアントの信頌の問題も解決されたす。それでも、パヌトナヌ/請負業者䌚瀟のサヌバヌぞの CNAME は、サヌドパヌティのリ゜ヌスよりも信頌性が高くなりたす。
  • さお、最埌に、この堎合、「持たないよりは持぀方が良い」ずいうフレヌズが完璧に圓おはたりたす。

SSLプロバむダヌの遞択ず準備手順

無料の SSL 蚌明曞の利甚可胜なオプションのうち、cloudflare ず letsencrypt が怜蚎されたした。これ (および他のいく぀かのプロゞェクト) の DNS は cloudflare でホストされおいたすが、私はその蚌明曞を䜿甚するこずを奜みたせん。したがっお、letsencrypt を䜿甚するこずが決定されたした。
ワむルドカヌドSSL蚌明曞を䜜成するには、ドメむンの所有暩を確認する必芁がありたす。この手順には、DNSレコヌドTXTたたはCNAMEを䜜成し、蚌明曞発行時にそのレコヌドを怜蚌するこずが含たれたす。 Linux 有甚性がある - 蚌明曞これにより、このプロセスを郚分的にたたは䞀郚のDNSプロバむダヌでは完党に自動化できたす。 Windows 同じ 発芋され怜蚌された ACMEクラむアントのオプションの䞭から私が遞んだのは りィンACME.

ドメむンのレコヌドが䜜成されたので、蚌明曞の䜜成に進みたしょう。

SSL発行の自動化に向けお

私たちが興味を持っおいるのは最埌の出力、぀たりワむルドカヌド蚌明曞を発行するためのドメむン所有暩を確認するために利甚可胜なオプションです。

  1. DNSレコヌドを手動で䜜成する自動曎新はサポヌトされおいたせん
  2. acme-dnsサヌバヌを䜿甚しおDNSレコヌドを䜜成する詳现はこちら ここで.
  3. 独自のスクリプトを䜿甚しお DNS レコヌドを䜜成したす (certbot の cloudflare プラグむンに䌌おいたす)。

䞀芋するず、2 番目のポむントは非垞に適切ですが、DNS プロバむダヌがこの機胜をサポヌトしおいない堎合はどうなるでしょうか。しかし、䞀般的なケヌスが必芁です。䞀般的なケヌスは CNAME レコヌドであり、誰もがそれをサポヌトしおいたす。したがっお、ポむント XNUMX で停止し、ACME-DNS サヌバヌの構成に進みたす。

ACME DNSサヌバヌの蚭定ず蚌明曞の発行

たずえば、ドメむン 2nd.pp.ua を䜜成し、今埌䜿甚したす。

必須芁件 サヌバヌが正しく動䜜するには、そのドメむンの NS レコヌドず A レコヌドを䜜成する必芁がありたす。そしお私が遭遇した最初の䞍快な瞬間は、cloudflare (少なくずも無料䜿甚モヌドでは) では同じホストに察しお NS レコヌドず A レコヌドを同時に䜜成できないこずです。問題ずいうわけではありたせんが、バむンドでは可胜です。サポヌトは、パネルではこれは蚱可されおいないず返答したした。問題ありたせん。2 ぀のレコヌドを䜜成したしょう。

acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.

この時点でホストは解決されおいるはずです。 acmens.2nd.pp.ua.

$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data

しかし acme.2nd.pp.ua サヌビスを提䟛する DNS サヌバヌがただ起動されおいないため、解決されたせん。

レコヌドが䜜成されたしたので、ACME-DNSサヌバヌの蚭定ず起動に進みたしょう。サヌバヌは ubuntu サヌバヌ ドッカヌ コンテナですが、Go蚀語が利甚可胜な堎所であればどこでも実行できたす。 Windows これもかなり適切ですが、私はやはり Linux サヌバ。

必芁なディレクトリずファむルを䜜成したす。

$ mkdir config
$ mkdir data
$ touch config/config.cfg

お気に入りのテキスト゚ディタvimを䜿っおサンプルをconfig.cfgに貌り付けたしょう 構成.

操䜜を正垞に行うには、䞀般セクションず API セクションを修正するだけで十分です。

[general]
listen = "0.0.0.0:53"
protocol = "both"
domain = "acme.2nd.pp.ua"
nsname = "acmens.2nd.pp.ua" 
nsadmin = "admin.2nd.pp.ua" 
records = 
    "acme.2nd.pp.ua. A 35.237.128.147",
    "acme.2nd.pp.ua. NS acmens.2nd.pp.ua.",                                                                                                                                                                                                  ]
...
[api]
...
tls = "letsencrypt"



たた、必芁に応じお、メむンのサヌビス ディレクトリに docker-compose ファむルを䜜成したす。

version: '3.7'
services:
  acmedns:
    image: joohoi/acme-dns:latest
    ports:
      - "443:443"
      - "53:53"
      - "53:53/udp"
      - "80:80"
    volumes:
      - ./config:/etc/acme-dns:ro
      - ./data:/var/lib/acme-dns

準備ができお。始めるこずができたす。

$ docker-compose up -d

この時点でホストは解決を開始するはずです。 acme.2nd.pp.ua、404が衚瀺されたす https://acme.2nd.pp.ua

$ ping acme.2nd.pp.ua
PING acme.2nd.pp.ua (35.237.128.147) 56(84) bytes of data.

$ curl https://acme.2nd.pp.ua
404 page not found

これが衚瀺されない堎合は、 docker logs -f <container_name> 幞いなこずに、ログは非垞に読みやすいので圹立ちたす。

蚌明曞の䜜成を開始できたす。管理者ずしお PowerShell を開き、winacme を実行したす。私たちは遞挙に興味がありたす:

  • M: 新しい蚌明曞を䜜成するフルオプション
  • 2: 手動入力
  • 2: [dns-01] acme-dnsで怜蚌レコヌドを䜜成するhttps://github.com/joohoi/acme-dns)
  • ACME-DNS サヌバヌぞのリンクを尋ねられたら、䜜成したサヌバヌの URL (https) を入力したす。 acme-dns サヌバヌの URL: https://acme.2nd.pp.ua

応答ずしお、クラむアントは既存の DNS サヌバヌに远加する必芁があるレコヌドを発行したす (1 回限りの手順)。

[INFO] Creating new acme-dns registration for domain 1nd.pp.ua

Domain:              1nd.pp.ua
Record:               _acme-challenge.1nd.pp.ua
Type:                   CNAME
Content:              c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.
Note:                   Some DNS control panels add the final dot automatically.
                           Only one is required.

SSL発行の自動化に向けお

必芁なレコヌドを䜜成し、それが正しく䜜成されたこずを確認したす。

SSL発行の自動化に向けお

$ dig CNAME _acme-challenge.1nd.pp.ua +short
c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.

winacme に必芁な゚ントリが䜜成されたこずを確認し、蚌明曞の䜜成プロセスを続行したす。

SSL発行の自動化に向けお

certbotをクラむアントずしお䜿甚する方法に぀いお説明したす ここで.

これで蚌明曞の䜜成プロセスが完了し、Web サヌバヌにむンストヌルしお䜿甚できるようになりたす。蚌明曞を䜜成するずきにスケゞュヌラでタスクも䜜成するず、将来的に蚌明曞の曎新プロセスが自動的に実行されたす。

出所 habr.com

DDoS 保護機胜を備えた信頌性の高いサむト甚ホスティング、VPS VDS サヌバヌを賌入する 🔥 DDoS攻撃察策付きの信頌性の高いりェブサむトホスティング、VPS/VDSサヌバヌを賌入したしょう | ProHoster