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