web-dev-qa-db-ja.com

LinuxのTLSハンドシェイクでSHA-1を無効にする

SHA-1は推奨されていないため、SHA-1ハッシュアルゴリズムを無効にしたいと思います。 OpenSSL APIを使用して署名アルゴリズムをSSL_CTXに設定しました。

static INT32 signAlgoList[24] = { NID_sha512, EVP_PKEY_RSA, NID_sha512, EVP_PKEY_DSA, NID_sha512, EVP_PKEY_EC,NID_sha384, EVP_PKEY_RSA, NID_sha512, EVP_PKEY_DSA, NID_sha384, EVP_PKEY_EC, NID_sha256, EVP_PKEY_RSA, NID_sha256, EVP_PKEY_DSA, NID_sha256, EVP_PKEY_EC, NID_sha224, EVP_PKEY_RSA, NID_sha224, EVP_PKEY_DSA, NID_sha224, EVP_PKEY_EC };

署名アルゴリズムリスト:

(void)SSL_CTX_set1_client_sigalgs(sCtxMutualAuth, (int *)signAlgoList, 24);
(void)SSL_CTX_set1_sigalgs(sCtxMutualAuth, (int *)signAlgoList, 24);

これらのAPIをプログラムに組み込んだ後、WindowsではSHA-1が無効になります(WiresharkログにSHA-1が表示されません)が、LinuxではSHA-1が無効になっていません(WiresharkログにSHA-1が表示されています)。 LinuxでSHA-1を無効にする他の方法はありますか?

1
Karma Yogi

SHA1は推奨されないため、...

この最初の仮定は間違っています。 SHA-1が推奨されない唯一の場所は、衝突耐性が必要な場所、つまり署名(たとえば、証明書の署名)です。 SHA-1はHMACとして使用するにはまだ問題ありません。それは(さらに古いMD5と共に)TLS 1.1プロトコルなどの重要な部分です。

3
Steffen Ullrich