自己署名証明書を使用すると、「x509:不明な機関から署名された証明書」エラー

自己署名証明書を使用すると、「x509:不明な機関から署名された証明書」エラー

自己署名証明書を使用して安全な接続を確立したいと思います。 opensslに次のconfファイルを使用しました。

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
countryName = EN
stateOrProvinceName = NY
localityName = New York
organizationName = MyOrg
organizationalUnitName = MyDept

[v3_req]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints = CA:TRUE
subjectAltName = @alt_names

[alt_names]
IP.1 = 10.0.4.70

実行中の証明書を生成します。

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout key.pem -out cert.pem -config openssl.cnf

しかし、私のサーバーがこれらの証明書を受け取ると、

[WARNING] 2018/04/14 14:19:09 push_to_system.go:419: sending sample request failed:Post https://10.0.4.70:8090/content/: x509: certificate signed by unknown authority

この問題を回避するには、証明書の生成をどのように変更する必要がありますか?

ベストアンサー1

Samの答えは仕事に役立つかもしれませんが、本番には良いアイデアではありません。明確にするために、なぜこのような結果が出てくるのかを説明しようとします。

証明書署名用の暗号鍵セットを生成するだけでは不十分です。誰でもできることなのですが、先ほどやりました。これがまさに「信頼できる認証機関」がある理由です。これらは既知で信頼できるエンティティです。 SSL実装には、機関が署名したと主張する証明書が実際にその機関によって発行されたものであり、他の人以外の人が発行したものではないことを確認するための機関と公開鍵のリストが付属しています。

したがって、独自の証明書を作成するとき、すべてのSSL実装は証明書が実際にユーザーによって署名されていることを確認しますが、ユーザーが信頼できるかどうかはわかりません。したがって、認証局(CA)を信頼できるリストに追加しない限り、そうでなければ証明書を拒否します。 SSLは、メッセージを暗号化するだけでなく、会話中の人や暗号化された署名を持つ人が誰であるかを判断するためにも使用されます。

大量の「スキップ」、「バイパス」、または本番検証は、誰もが証明書を受け入れるため、偽装や中間者の攻撃に対して脆弱になるため、良い考えではありません。

問題は証明書の生成ではなく、SSLクライアント構成にあります。それは誰と話しているのか分からないので、接続を拒否することを非常に明確に伝えます。 (これはいい)

クライアントで認証局を信頼できる認証局として設定する必要があります。これは設定によって異なりますので、ヘルプを入手するにはより詳細な情報が必要です。問題を解決するための別の質問は次のとおりです。

信頼できるリストに自己署名証明書を追加する

カールで使用できるように、自己署名証明書をUbuntuに追加します。

これはあなたにのみ適用されます。サードパーティの顧客と話す場合は、すべて同じ理由であなたの認証を拒否し、同じ調整を行う必要があります。これが信頼できるCAがアプリケーション/サーバーなどの署名証明書サービスを販売する理由です。 CAはすでにリストにあり、あなたの身元を確認するのに信頼できるからです。したがって、これを行うために支払うと、結果の証明書は誰もが信頼できます。 :)

引用する」https://en.wikipedia.org/wiki/Certificate_authority

おすすめ記事