需要用户上传证书文件。 理想场景是:上传文件,自动识别这是私钥、公钥、CA 根证书,并显示在相应的位置,且读取并将公钥的签发者显示在前端界面。
但似乎公钥、CA 根证书的文本内容都是:
-----BEGIN CERTIFICATE-----
xxxxxx
-----END CERTIFICATE-----
那么该如何用前端技术区分一个证书文件是公钥还是 CA 根证书?
1
oh 2018-05-16 11:19:43 +08:00 via iPhone
两个输入框……
|
2
islujw OP @oh 分开上传是可以哒,但我们想尽可能实现一个框内自动识别。因为证书后缀名什么的还挺杂乱的,用户有可能分不清哪个是哪个。
|
3
rrfeng 2018-05-16 12:11:27 +08:00 via Android
不可能的
|
4
isCyan 2018-05-16 12:18:56 +08:00 1
给个思路,我个人也不了解:
https://censys.io/certificates/3111500c4a66012cdae333ec3fca1c9dde45c954440e7ee413716bff3663c074/openssl 这个是 Github 的证书,你可以看到 X509v3 扩展里面有个 CA:FALSE https://censys.io/certificates/cbf8fb77660167e6baacd0df77cda397d0117ee2beea23b935317f8bb5b5e3b0/openssl 这个 DigiCert 的 EV 中间证书(不是根)之一,可以看到 CA:TRUE,而且 X509v3 Key Usage 包含 Certificate Sign, CRL Sign https://censys.io/certificates/16af57a9f676b0ab126095aa5ebadef22ab31119d644ac95cd4b93dbf3f26aeb/openssl 这个 DigiCert 的根证书之一,特点当然是自签名,而且 CA:TRUE,X509v3 Key Usage 包含 Certificate Sign, CRL Sign 区别很明显了,就是不知道有没有能读取这些参数的前端库 |
5
isCyan 2018-05-16 12:23:06 +08:00 1
https://github.com/digitalbazaar/forge
这个库貌似可以,有个 X.509 实现,你可以看看 |
6
momocraft 2018-05-16 12:23:56 +08:00
这格式是平台无关的。你能把 x509 这些东西移植到前端就行。
|
7
islujw OP @isCyan 非常感谢!用 forge decode 之前需要通过 HTML5 的 FileReader 把文件读出来,.pem 和 .crt 文件都没问题,但 .cer 文件读出来是乱码,decode 不了。请问这个有方法吗?
|
9
geekzu 2018-05-28 02:48:36 +08:00 via Android
@islujw 可能是 der 格式,需要转换成 base64 编码的 pem 格式,openssl 有相关操作命令,前端估计整不了
|
10
Hardrain 2018-05-31 17:38:21 +08:00
openssl x509 -noout -text -in {证书路径}|grep -Ee 'CA:'
看输出的是 CA:FALSE 还是 CA:TRUE |
11
Hardrain 2018-05-31 17:39:12 +08:00
如果是 DER(二进制)格式,openssl x509 后面加-inform DER
如果是 PEM(Base64)格式,无需处理 |
12
fairyaierl 2018-08-01 17:29:39 +08:00
@islujw 楼主实现了吗?碰到一样的问题了。
|
13
islujw OP @fairyaierl 实现了
|