1

無料のクラス 1 SSL 証明書を提供する Startssl.com は、非常にユニークでシンプルな認証システムを使用しています。ログイン プロセス中にクライアントをhttps://auth.startssl.com/にリダイレクトし、ブラウザは一意の証明書を要求します。その段階が終了すると、ユーザー名/パスワード認証なしでコントロール パネルにリダイレクトされます。

証明書リクエスト

HTTP(s) がこの種の認証をネイティブに実行できることさえ知りませんでした。

このリクエストを分析するために使用しようとしましcurlたが、通過する値の HTTPS リクエストを取得できません。

X:~ ken$ curl https://auth.startssl.com/ --cert ./startssl-id.crt 
curl: (58) unable to set private key file: './startssl-id.crt' type PEM

curl はこのタイプの HTTPS 接続をサポートしていますか? サポートしている場合、サーバー側とクライアント側の両方でどのように構成されますか?

4

2 に答える 2

1

クライアント側の証明書を使用しています。トラフィックを監視するには、ユーザー エージェントがクライアント側の証明書をサポートする必要があります。ネットワーク トラフィックだけを見たい場合は、ブラウザのネットワーク トラフィック ログを使用して調べることができますが、証明書のネゴシエーションは含まれません。

curl はクライアント側の証明書をサポートしています。次のように使用します。

curl --cert mycert.pem https://secure.example.com

本当にパケット ネゴシエーションの核心を知りたい場合は、wireshark を使用してパケットを分析することをお勧めします。

Apache でこれを構成するためのドキュメントは次のとおりです。

http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html#accesscontrol

于 2011-09-17T03:53:41.780 に答える
0

このページには、任意の Web アプリにクライアント証明書認証を追加するための適切な方法が記載されています。

https://www.scriptjunkie.us/2013/11/adding-easy-ssl-client-authentication-to-any-webapp/

クライアント証明書をcurlで動作させることについては、opensslを使用して証明書をpkcs12形式からプレーンな秘密鍵と証明書に変換する必要があるでしょう。

openssl pkcs12 -CApath /etc/ssl/certs -in startcom.p12 -out start.pem -info -nodes

startcom.p12 は Firefox からエクスポートされたものです (Mac を持っていないので、Safari ではテストできません)。

そして、私はできる:

openssl s_client -connect auth.startssl.com:443 -CApath /etc/ssl/certs/ -cert /tmp/start.pem -key /tmp/start.key -prexit -debug -msg -state -servername auth.startssl.com -tlsextdebug

接続するもの、および:

wget --verbose --debug --ca-directory=/etc/ssl/certs/ --certificate=/tmp/start.pem --private-key=/tmp/start.key  https://auth.startssl.com/

も機能します。

于 2014-09-22T22:00:31.917 に答える