2017-02-20 5 views
0

BadSSLは、このUrl https://revoked.badssl.com/にSSL無効化証明書があることを示します。 PHPでSSL証明書が失効したのはなぜですか?

は、SSL証明書の有効期限が2019-09-11 12:00:00

$url = "https://revoked.badssl.com/"; 

$orignal_parse = parse_url($url, PHP_URL_HOST); 
$get = stream_context_create(array("ssl" => array("capture_peer_cert" => TRUE))); 
$read = stream_socket_client("ssl://".$orignal_parse.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get); 
$cert = stream_context_get_params($read); 
$certinfo = openssl_x509_parse($cert['options']['ssl']['peer_certificate']); 
$validFrom = date('Y-m-d H:i:s', $certinfo['validFrom_time_t']); 
$validTo = date('Y-m-d H:i:s', $certinfo['validTo_time_t']); 
$current = date('Y-m-d H:i:s', time()); 


$validFrom = 2016-09-02 00:00:00 
$validTo = 2019-09-11 12:00:00 
$current = 2017-02-20 19:00:00 

$validFrom > $current : False

$validTo < $current : False

に設定されている私は$validFrom > $current OR $validTo < $current場合は証明書が失効していることを考えました。これはそうではありません。

PHP & cURLライブラリでは、証明書の失効をチェックすることはできません。所有者が証明書を改ざんして取り消した場合、その証明書はわかりません。それが正しいか?

+0

期限切れの外で証明書を取り消すことはできますか? – Bytewave

+0

はい! @pedrofbで示されるように、Revoked!= Expired。 – LeMoussel

答えて

0

証明書が失効/無効の場合$ validFrom> $現在のOR $ validTo < $現在

あなたはどちらも無効しかし有効期限が切れ、失効されていない説明は何。 署名が証明書と一致しない場合は、(特に)証明書が無効です。認証局が明示的に証明書を失効させた場合、それは取り消されます。

証明書を失効させても証明書を変更しても失効ステータスは表示されません(不可能:既に公開されています)。代わりにOnline Certificate Status Protocol (OCSP)を使用してステータスを問い合わせるか、Certificate Revocation List (CRL)をダウンロードし、このリストに対して証明書を確認する必要があります。

+0

PHP&cURLライブラリで証明書の失効をチェックすることができないという事実に関する投稿を更新しました。所有者が証明書を改ざんして取り消した場合、その証明書はわかりません。 – LeMoussel

+0

@LeMoussel:特別なライブラリが必要ですが、CRLに対するチェックのように見えます。http://phpseclib.sourceforge.net/x509/compare.html#certrevokedを参照してください。 OCSPは悪化しています.OCSPのサポートは実際にはPythonやRubyのような多くの言語で非常に悪いです(この場合はPerlが優れています)。理由の1つは、OpenSSL 1.1.0までOpenSSLに正式なAPIがなかったことです。 –

0

失効!=期限切れ

証明書の有効期限が切れているときvalidTo < currentDate。発行認証局によって取り消された証明書は、この証明書が電子的プロセスで受け入れられてはならないことを意味します。

証明書の有効期間は自動的に確認できますが、証明書の失効は、たとえば所有者のデータが変更されたか、証明書が盗難されたなどの手動操作です。

認証局は、CRLまたはOCSP要求を使用して、オンラインでチェックできる失効した証明書のリストを公開します。通常、証明書にはCRL/OCSP URLが含まれます。 PHP & cURLのライブラリを確認した後に更新

はサポートがないようです。あなたの質問を簡単に解決できないのではないかと恐れています。

@StephenUlrichが提案したライブラリはオプションですが、CRL URLが証明書から抽出されないという欠点があります。各種類の証明書に使用します。一部のCAだけがOCSPを公開するだけでなく、

+0

証明書の有効期限が切れている場合は有効ですか? – LeMoussel

+0

一般に、有効期限切れの証明書は電子プロセスで使用するために有効であるとはみなされません。認証、デジタル署名などですが、期限切れの証明書で実行されるデジタル署名は、タイムスタンプ。取り消された証明書にもこのルールを適用する – pedrofb

関連する問題