1

私は SSL の専門家ではありません。SSL 関連の用語を間違って使用している場合はご容赦ください。何らかの理由で、curl が --cacert オプションを使用してこのサイトの証明書を提供している https でファイルをダウンロードできません。

https でアクセスできるイントラネット サイトがあります。信頼されていない (または自己署名した) SSL 証明書を受け入れた後、Firefox でこのサイトを開くことができます。このサイトの証明書を Firefox からファイルにエクスポートしました。/etc/pki/tls/certs からすべての証明書を削除したため、curl は --cacert オプションで指定されたファイル内の証明書以外の場所に証明書を見つけることができません。

--cacert オプションで証明書ファイルを指定して curl を実行すると、失敗します。

curl -v https://some-intranet-site.com/repodata/repomd.xml --cacert exported_certificate.cer

* Peer certificate cannot be authenticated with known CA certificates
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html

Google の証明書をエクスポートし、curl でhttps://gogole.comにアクセスしようとすると、次のように動作します。

curl https://google.com --cacert ~/dev/tmp/google.cert 
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

説明をいただけますか?

ありがとうございました。

4

1 に答える 1

1

自己署名証明書を使用すると、警告が表示されるため、あまり良くない可能性があります。

いずれの場合も、サーバー証明書の CN にサーバーの DNS 名が含まれていることを確認する必要があります。また、exported_certificate.cer が PEM 形式であることを確認してください。私の推測では、あなたはDER形式です。PEM 形式の場合は通常のテキスト エディタで読み取り、DER の場合はバイナリ形式です。

最後に、サーバー証明書を検証したくない場合は、「-k」を使用して curl でこれをスキップできます。したがって、あなたの場合、「curl -k -v https://some-intranet-site.com/repodata/repomd.xml

于 2012-11-06T15:35:57.153 に答える