私の顧客は、アプリケーションが機能するために自己署名証明書を使用しています。動作するには、証明書の署名に使用したルート証明書をインストールする必要があります。
1つのドメインに対してのみ検証するようにルート証明書を構成することは可能ですか?
私の顧客は、アプリケーションが機能するために自己署名証明書を使用しています。動作するには、証明書の署名に使用したルート証明書をインストールする必要があります。
1つのドメインに対してのみ検証するようにルート証明書を構成することは可能ですか?
回答:
いいえ、顧客のCA証明書を信頼することは、そのCAによって署名されたすべての証明書の信頼を意味します。
特定の(サブ)ドメイン(*のみ)に対してのみ、顧客または他のCA証明書を信頼することをエンドユーザーとして選択できる簡単なオプションを備えたアプリケーション/ライブラリは知りません。 example.comと* .example.orgのみ。
Mozillaは、現在信頼されている政府支援CAをオープンアテンションポイントとして同様に懸念しています。たとえば、ChromeにはGoogleサイトにアクセスするための追加チェックが組み込まれています。これは、不正な* .google.com証明書とDiginotar CA 。
ただし、CAを信頼していない場合でも、そのCAによって署名された特定のサーバー証明書をインポート/信頼することができます。これにより、その証明書のホスト名に対するSSL警告が防止されます。これにより、アプリケーションがエラーや苦情なしに動作するはずです。
X.509v3 PKI標準の非常に未使用のオプションはName Constraints拡張です。これにより、CA証明書に、証明書の発行が許可されているドメイン名パターンのホワイトリストとブラックリストを含めることができます。
運がよければ、顧客はPKIインフラストラクチャをセットアップし、CA証明書にその名前の制約を含めたときに自分自身を抑制しているかもしれません。その後、CA証明書を直接インポートして、限られた範囲のドメイン名しか検証できないことを確認できます。
example.com
または*.ad.example.com
有効な証明書などの制限はありません。また、内部CAは*.example.bank
、すてきな中間者攻撃を許可し、オンラインバンキングの認証情報を覗き見るための証明書を発行でき ます。
@CryptoGuyの回答はかなり良いものでしたが、さらに詳しく説明したかったのです。
言い換えると:
サードパーティCAを制限して、希望する名前リストに発行された(そのCAからの)証明書を信頼できます。サードパーティCAに名前制約拡張機能がない場合でも、相互認証を介して独自の内部CAサーバーを使用して、サードパーティCAを適用できます。秘trickは、内部CAを使用してサードパーティCAに署名することです。
リーフSSL証明書->相互証明書-> CA証明書->内部ルート証明書。
そして、これがどのように機能するかを示します(OpenSSLコマンドラインCAを使用)
単純なCAを作成する
openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"
中間CAの作成をスキップできます
Name Constraintsを使用して、中間CA要求を作成します。
openssl req -new -days 3650 -newkey rsa:2048 -out domain-ca.req -sha256 -keyout domain-ca.key -config ossl_domain_com.cfg
これをossl_domain_com.cfg
ファイルに:
[ req ]
prompt=no
distinguished_name=req_distinguished_name
req_extensions=domain_ca
[ req_distinguished_name ]
CN=somedomain.com trust CA
[ domain_ca ]
basicConstraints=critical,CA:true,pathlen:1
nameConstraints=critical,permitted;DNS:.somedomain.com
次に、CAでその中間ドメインCAに署名します。
openssl x509 -req -in domain-ca.req -CA root-ca.crt -CAkey root-ca.key -sha256 -set_serial 1 -out domain-ca.crt -extensions domain_ca -extfile ossl_domain_com.cfg
中間体の作成をスキップした場合は、ルートCAを使用して署名します
証明書を使用して、元のドメインのCAをあなたの権限で再署名します。ここでCA拡張機能を追加できます。
openssl x509 -in third_party_ca.crt -CA domain-ca.crt -CAkey domain-ca.key -set_serial 47 -sha256 -extensions domain_ca -extfile ossl_domain_com.cfg -out domain-cross-ca.crt
-x509-to-req
引数を使用してリクエストを作成する必要がある場合があります。リクエストは、上記の中間体とまったく同じ方法で署名します。
次に、ルートCA、中間CA、およびドメインクロスCAをブラウザーの信頼データベースに追加します。
basicConstraints
構成ファイルの行により、制約拡張が証明書に2回含まれるようになり、Firefoxが証明書を拒否し、不可解なエラーメッセージが表示されます。安全に削除できると思います。
error with certificate to be certified - should be self signed
。それは何を意味し、これを解決する方法は?pastebin.ubuntu.com/p/QHhpQh2N6J