之前,有一个域名使用了网上免费的 ssl 证书,然后想在该证书过期后更换为 Let’s encrypt 的免费证书,便想查询下该域名 ssl 证书还剩多少天过期。
查询证书到期时间的方法还是很简单的,以下使用 sslforfree.com 这个域名进行测试,下面简单的记录一下步骤。
方法一:直接浏览器上查看
该方法的前提是你的域名已经指向了 web 服务器,在浏览器上可以正常访问。
首先使用浏览器访问你的站点域名,然后单击地址栏上面的锁图标进行查看.
方法二:在服务端使用 Openssl 工具进行查看
由于我服务端是搭建在 Centos 上,所以用 xshell 或者 putty 工具登录后,进入证书目录,使用 openssl 命令进行查看:
cd /usr/ssl/cert
openssl x509 -in signed.crt -noout -dates
上面改成你自己证书的所在目录,证书名称也改成你自己服务端上证书的名称。
方法三:使用 php 代码方法进行查看
如果你有多个可访问的域名,那么使用代码的方法进行查看就会容易很多,省得一个一个手动查看。下面贴上代码:
/**
- 获取证书有效期
*/
public function getValidity(){
$domain = “sslforfree.com”;
$context = stream_context_create(array(“ssl” => array(“capture_peer_cert_chain” => true)));
s
o
c
k
e
t
=
s
t
r
e
a
m
s
o
c
k
e
t
c
l
i
e
n
t
(
"
s
s
l
:
/
/
socket = stream_socket_client("ssl://
socket=streamsocketclient("ssl://domain:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
c
o
n
t
e
x
t
=
s
t
r
e
a
m
c
o
n
t
e
x
t
g
e
t
p
a
r
a
m
s
(
context = stream_context_get_params(
context=streamcontextgetparams(socket);
foreach ($context[“options”][“ssl”][“peer_certificate_chain”] as $value) {
//使用openssl扩展解析证书,这里使用x509证书验证函数
c
e
r
I
n
f
o
=
o
p
e
n
s
s
l
x
50
9
p
a
r
s
e
(
cerInfo = openssl_x509_parse(
cerInfo=opensslx509parse(value);
if(strpos(
c
e
r
I
n
f
o
[
′
n
a
m
e
′
]
,
cerInfo['name'],
cerInfo[′name′],domain)) {
echo “start:”.date(“Y-m-d”,
c
e
r
I
n
f
o
[
′
v
a
l
i
d
F
r
o
m
t
i
m
e
t
′
]
)
.
"
<
b
r
/
>
"
;
e
c
h
o
"
e
n
d
:
"
.
d
a
t
e
(
"
Y
−
m
−
d
"
,
cerInfo['validFrom_time_t'])."<br/>"; echo "end:".date("Y-m-d",
cerInfo[′validFromtimet′])."<br/>";echo"end:".date("Y−m−d",cerInfo[‘validTo_time_t’]);
}
}
}
输出内容:
start:2018-04-06
end:2018-07-05
上面的 $cerInfo 信息参数很多,敢兴趣的可以打印出来看下
参考链接:
how to check ssl certificate