检索以PEM格式的证书的到期时间。

7 浏览
0 Comments

检索以PEM格式的证书的到期时间。

我有一个要求,需要通知客户他们的证书将在几天内过期,因此在此之前更新,以确保TLS加密正常工作。\n我如何获取PEM格式证书的到期时间?

0
0 Comments

在处理与SSL证书相关的问题时,我们可能需要获取PEM格式证书的到期时间。下面是解决这个问题的步骤:

1. 将PEM证书的内容复制到https://www.sslshopper.com/certificate-decoder.html网站中。

2. 网站将显示SSL证书的详细信息,包括证书的起始和到期日期。

这样,我们就可以方便地检索PEM格式证书的到期时间了。

0
0 Comments

从上述代码中,我们可以看出问题的出现原因是要获取PEM格式证书的过期时间。代码中首先判断是从文件还是从内存中获取证书,然后利用BIO_new函数创建BIO对象,将证书数据写入BIO对象中。接着使用PEM_read_bio_X509函数从BIO对象中读取X509证书。然后根据不同版本的OpenSSL库,获取证书的有效期时间。最后,在清理资源时释放相关对象。

为了解决这个问题,我们可以按照以下步骤进行操作:

1. 判断是从文件还是从内存中获取证书。

2. 创建BIO对象,并将证书数据写入BIO对象中。

3. 使用PEM_read_bio_X509函数从BIO对象中读取X509证书。

4. 根据不同版本的OpenSSL库,获取证书的有效期时间。

5. 清理资源时释放相关对象。

代码整理如下:

#if FROMFILE
BIO* bio = BIO_new_file(filename, "rb");
if (bio == null) goto err;
#else
BIO* bio = BIO_new(BIO_s_mem());
BIO_write(bio, data, dataLen);
#endif
X509* x509 = PEM_read_bio_X509(bio, NULL, NULL, NULL);
if (x509 == null) goto err;
#if OPENSSL_11
ASN1_TIME* notBefore = X509_get0_notBefore(x509);
#else
ASN1_TIME* notBefore = x509->validity->notBefore;
#endif
// Choose a time representation and convert the ASN1_TIME to it.
goto cleanup;
err:
// Exercise left to the reader.
cleanup:
// Don't free notBefore, since it was obtained via a get0 or interior pointer.
if (x509) X509_free(x509);
if (bio) BIO_free(bio);

通过以上整理,我们可以实现从PEM格式证书中获取到证书的过期时间。

0