2011-06-23 11 views

答えて

4

PHPには手がありません。 SSLはWebサーバーによってのみ処理されます。 Apacheは、CGI環境でいくつかの情報を渡すように設定できます。

SSLOptionsのマニュアルとSSL_* environment variablesの利用可能なリストを参照してください。あなたが読んでいたかったものはおそらく:

print $_SERVER['SSL_CLIENT_S_DN']; 
+0

+ 1'ed、私の答えよりも簡単:) – stefgosselin

+0

+1これをさらにApache Httpdレベルでプッシュしたい場合は、 'FakeBasicAuth'を使うこともできます。 – Bruno

2

まあ、それは可能ですが、カールの助けを借りてあります。

cURLを冗長モードで実行し、出力をPHPに送信します(かなり簡単ですか?)。次に、発行者名(OU = Secure Server Certification Authority == Verisign)があるのでPHPで出力を解析します。

IE、サンプルカールコール:別のオプションは、あなたのHTTPSクエリとその方法が聞かせてプロキシにuse stunnelになり

* About to connect() to login.yahoo.com:443 
* Connected to login1.login.vip.dcn.yahoo.com (216.109.127.60) port 443 
* SSL connection using EDH-RSA-DES-CBC3-SHA 
* Server certificate: 
* subject: /C=US/ST=California/L=Santa Clara/O=Yahoo/OU=Yahoo/CN=login.yahoo.com 
* start date: 2003-02-08 00:00:00 GMT 
* expire date: 2004-02-08 23:59:59 GMT 
* common name: login.yahoo.com (matched) 
* issuer: /C=US/O=RSA Data Security, Inc./OU=Secure Server Certification Authority 
> HEAD/HTTP/1.1 
User-Agent: curl/7.10.2 (i386-redhat-linux-gnu) libcurl/7.10.2 OpenSSL/0.9.6b ipv6 zlib/1.1.3 
Host: login.yahoo.com 
Pragma: no-cache 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* 

HTTP/1.0 200 OK 

>> curl -I -v https://login.yahoo.com 

は、この解析可能な出力を返しますPHPは標準のHTTPクエリを使用していると考え、出力のすべての1バイトを返すべきだと考えます。

+0

クライアント証明書とは何の関係もないようです(これが質問の内容です)。さらに、2つのリクエスト(カールと1つはPHP内)を行うことは、必ずしも2つの証明書が同じであることを意味するものではありません。 – Bruno

関連する問題