最近看到这样一则新闻,一家西方的证书机构拒绝为俄罗斯域名颁发 HTTPS 证书,甚至还吊销已经颁发的有效证书。

由此意识到证书除了自然过期之外还有撤销一说,这块有盲区,于是了解总结下。

HTTPS证书有效期

首先需要了解,HTTPS证书都具有有效期,它们会过期。这样设计是为了确保网站身份信息是最新最准确的。一般证书有效期最长1年。

Certificate revocation list即CRL机制

撤销机制使得CA机构可以吊销还未过期的证书,之后用户使用浏览器访问站点,则会直接提醒证书无效。

阅读全文 »

最近接到用户提交的issue,Ubuntu- Firefox上传证书文件时选择文件总失败。调查后发现是兼容性问题,因此这里总结下。

input-accept

先说明下该属性设定的含义。accept属性设定作用为限制文件上传类型,对于accept的值,可以是文件后缀,比如.jpg这种,也可以是mime,比如image/jpeg,同时HTML标准支持逗号分隔实现多文件类型

问题代码

<input type="file" accept="application/x-x509-ca-cert" />

阅读全文 »

工作中经常遇到glob,比如eslint/tsc中include配置,再比如shell中筛选文件,IDE中Code Style等。之前对其没有系统学习,因此使用时往往很低效,为此补下课,这里Mark下。

glob vs 正则

查询了些资料,总结以下几点

  1. glob 不等同于正则,且具体的元字符含义也很不相同,比如?代表单个字符,但正则中却是前面的字符出现1次或者0次
阅读全文 »

OpenSSL

1
2
3
4
5
# 版本信息
$ openssl version -a

# 性能测试
$ openssl speed

关于PEM格式文件

1
2
3
-----BEGIN <whatever>----- 
data
-----END <whatever>----
  • 可保存证书或私钥

  • 每行64个字符

  • PEM格式是对 DER 编码转码为 Base64 字符格式

    PEM or Privacy Enhanced Mail is a Base64 encoded DER certificate.

  • DER格式是二进制编码,CER格式是二进制编码,只保存证书,不保存私钥

  • PEM格式下前32个字符不影响实际使用

阅读全文 »

有需求前端实现基于私钥导出公钥,调研了几个方案,最终解决,这里总结下。

解决办法

使用node-forge,该库支持浏览器端/Node服务端,因此前端可用。

如下贴出Node下如何使用

1
2
3
4
5
6
7
8
9
const forge = require('node-forge');// 浏览器端,更换为import或者直接script导入JS模块即可

const privateKeyPem = fs.readFileSync(`${__dirname}/client1.key`, {
encoding: 'utf8'
}); // client1为pem格式私钥文件

const forgePriKey = forge.pki.privateKeyFromPem(privateKeyPem);
const forgePubKey = forge.pki.setRsaPublicKey(forgePriKey.n, forgePriKey.e);
const publicKeyPem = forge.pki.publicKeyToPem(forgePubKey);
阅读全文 »
0%