2

こんにちは、ローカルで作成した REST Web サービスを SSL 経由でカールさせようとして頭が痛いです。「curl: (60) SSL 証明書の問題: 自己署名証明書 の詳細はこちら: http://curl.haxx.se/docs/sslcerts.html 」というメッセージが引き続き表示されます。 curl は、認証局 (CA) の公開鍵 (CA 証明書) の「バンドル」を使用して、デフォルトで SSL 証明書の検証を実行します。デフォルトのバンドル ファイルが適切でない場合は、 --cacert オプションを使用して別のファイルを指定できます。この HTTPS サーバーがバンドル内の CA によって署名された証明書を使用している場合、証明書の問題が原因で証明書の検証が失敗した可能性があります (証明書の有効期限が切れているか、名前が URL のドメイン名と一致しない可能性があります)。curl による証明書の検証をオフにしたい場合は、-k (または --insecure) オプションを使用してください。」

ここで私が従った手順

  1. OpenSSL プライベート証明書とキー ペアを使用して独自の CA 証明書を作成しましたca\private_ca_pk.pem 私の CN: RESTfulCustomer
  2. キーストアと mycert.pem keytool -genkey -validity 365 -alias myalias -keypass password -keystore myKeyStore.jks -storepass password を作成し、上記と同じ CN を使用しました

  3. 証明書署名要求 keytool -certreq -alias myalias -file myCert_csr.pem -keypass password -keystore myKeyStore.jks -storepass password を作成しました

  4. openssl ca -config c:\X509CA\openssl.cfg -days 365 -in c:\path\to\key_store\myCert_csr.pem -out c:\path\to\key_store\myCert.pem で CSR に署名しました。

  5. PEM 形式への変換 - 次のように、署名付き証明書 CertName.pem を PEM のみの形式に変換します。 .pem -outform PEM

  6. CA 証明書ファイルと certName.pem を連結した myCert.pem + c:\X509CA\ca\new_ca.pem myCert.chain
  7. 完全な証明書チェーンでキーストアを更新 - 次のように証明書の完全な証明書チェーンをインポートして、キーストア CertName.jks を更新します。それをfirefoxに入れ、server.xmlを更新しましたapache tomacat 7は正常に起動し、ssl Webページに問題なく移動できました。--insecure を使用しないと、Curl は機能しません。私の Curl コマンド curl -v --cacert ca.pem https:// localhost:8443/RESTfulCustomer/customers.json

上記の curl コマンドを実行すると、「curl: (60) SSL 証明書の問題: 自己署名証明書」というメッセージが表示されます。

http:// localhost:8080/RESTfuCustomer.customers.json に対して ssl を無効にして Curl コマンドを実行すると、正常に動作します。

ca.pem を myKeyStore.jks にインポートし、Apache を再起動しました。環境 Windows 7、Apache Tomcat 7、Spring Security 3.1、curl 7.30.0 (i386-pc-win32) libcurl/7.30.0 OpenSSL/1.0.1c zlib/1.2.7

どんな助けでも本当に感謝します

4

2 に答える 2

-1

次の回答を参照してください。

総括する:

% openssl s_client -showcerts -connect example.com:443 </dev/null 2>/dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' | grep -m1 -B-1 -- '-----END CERTIFICATE-----'  > cert.pem
% curl --cacert cert.pem https://example.com

そして多田さん、あなたは自己署名 Web サイトに安全に接続します。

于 2015-03-08T15:04:15.307 に答える