掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流
現在https的使用是大勢所趨,不同的平臺越來越重視https因為https更加安全。比如百度等搜索引擎對https更加友好,小程序和app強制要求https,瀏覽器會把非https標記為“不安全”。
而不管免費的安全證書還是收費的安全證書,都有一個期限,一般簽發(fā)一次是一年內的有效期,有的免費安全證書甚至只有幾個月的有效期。需要過期前進行續(xù)簽或者更換ssl證書才能保障服務的正常運行,而一旦https訪問不可用,對很多項目都是非常嚴重的訪問故障,就會出現下面這樣的情況,這顯然是大家都不像看到的。
不管是人工續(xù)簽,還是使用程序自動續(xù)簽,我們都的知道一個前提信息,那就是ssl證書的有效期。當然我們可以在首次簽發(fā)或上次續(xù)簽的時候知道ssl證書的過期時間。
但不可能用腦子記,還是記錄下來,都需要人工不停記著這回事。對于這樣的事項,相比計算機程序,人工是極其不靠譜的,比如比較忙的時候就很可能把這個事情給忘記了,特別是非專業(yè)人士。
于是我們就有一個需求:系統(tǒng)能夠自動監(jiān)測ssl證書過期時間,如果有效期在若干天內(如15天),系統(tǒng)能夠自動提醒網站運維人員或者自動續(xù)簽ssl證書的系統(tǒng)執(zhí)行相關操作。
這個需求,其實已經被整合到即將上線的“微構服務”系統(tǒng)中的網站巡查模塊中關于ssl證書的功能之一。要實現這個功能,就得讓程序能夠獲取到證書的有效時間。下面我們分享一段小程序用于獲取ssl安全證書的一些對上面需求有價值的信息:
$context = stream_context_create( ['ssl' => [ 'capture_peer_cert' => true, 'capture_peer_cert_chain' => true, ], ]); $host='m.althqafhm.com'; $url='ssl://'.$host.':443'; $client = @stream_socket_client($url, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context); $params = stream_context_get_params($client); $cert = $params['options']['ssl']['peer_certificate']; $cert_info = openssl_x509_parse($cert); print_r($cert_info);
通過上述小程序段我們可以獲取到ssl證書的有效期validTo_time_t參數值(時間戳),該參數值就是當前網站ssl證書的過期時間。除此之外還包括該ssl證書的其它信息,有了這些信息我們就可以判斷當前網站的ssl證書是否有效,距離有效期還有多久,等等。
至此,就可以獲取到我們想要的信息,這樣我們就可以在過期前及時更換ssl證書,或者對原來的ssl證書進行續(xù)期,避免出現因ssl證書問題影響網站的運行。
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流