web-dev-qa-db-ja.com

OpenSSL-異なる暗号スイートで自己署名証明書を生成します

組み込みデバイスとバックエンドサーバー(IIS 8.0)間の通信用にルート証明書とSSL証明書(自己署名)を生成したいのですが。

OpenSSLを使用して、次の手順で証明書を生成しました。

ルート証明書を作成した方法は次のとおりです。

openssl genrsa -out ca.key 2048
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 7305 -in ca.csr -out ca.crt -signkey ca.key

次に、SSL証明書を次のように作成しました。

openssl genrsa -out mydomain.com.key 2048
openssl req -new -key mydomain.com.key -out mydomain.com.csr
openssl x509 -req -days 7305 -in mydomain.com.csr -CA ./ca.crt -CAkey ./ca.key -CAcreateserial -out mydomain.com.crt

これはすべてうまくいきました。

IISにインポートした後、サポートされている次の暗号スイートを取得します。

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

私の組み込みデバイスは以下のみを処理できます。

TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256

同じWebサーバー(GoDaddy証明書を使用)でホストされているサイトは、これらの4つのスイートすべてをサポートしているため、Windows構成またはIISに制限がないことはわかっています。

したがって、別の方法で証明書を生成する必要があると思います。どうすればいいのかわからない...

2
H. Lowette

作成した証明書には、プロパティ「キー暗号化」が有効になっている「証明書キーの使用」拡張がありません。

したがって、サーバーが証明書のRSA鍵を鍵交換に使用することは許可されておらず、その結果、サーバーは一時的な鍵を持つ暗号スイートのみを提供します。

3
jaeckel

2015年11月18日更新水:Jaeckelの回答を確認してください。

Jaeckelは私が忘れていた有効なポイントを挙げます。結局のところ、証明書は問題ないかもしれません。 X509v3 Key Usageセクションを確認してください。

元の投稿は行の下に保存されます。


証明書で結構です。

暗号スイートのオーバーラップはありません。つまり、IISはForward-Secure暗号スイートのみを話し、組み込みデバイスはNON-Forward-Secure暗号スイートのみを話します。

IISCrypto を実行してみて、IISが組み込みデバイスが話す暗号スイートの少なくとも1つを話すことを許可するために使用します。

TLS_RSA_WITH_AES_128_CBC_SHAはTLS1.2の暗号スイートMandatory To Implementであるので、TLS1.2互換性を主張するものはすべて話すことができなければなりませんそれ)

優先度が最も低くなるように並べ替えます。これにより、FSスイートと非FSスイートの両方を話すクライアントが最終的にFS対応スイートになることを保証します。

ただし、別の証明書タイプを使用する場合は、「RSA」以外の実際的な選択肢は「ECDSA」のみです。ただし、リストした4つの組み込みスイートは、RSAタイプの証明書専用です。

1
StackzOfZtuff