yokila
yokila
Published on 2022-10-11 / 35 Visits
0
0

前端JS解析PEM证书

简介

本文主要是基于 jsrsasign 解析PEM格式的数字证书,以获得证书的Subject为例,展示如何在前端使用JS解析数字证书。

效果图

源码示例

<template>
  <div class="parseCert">
    <h1>本页面为展示如何在前端解析证书</h1>
    <p>第一步(安装库,网站参考:http://www.npmdoc.org/jsrsasignzhongwenwendangjsrsasign-jszhongwenjiaochengjiexi.html):<B>npm i jsrsasign</B></p>
    <p>第二步(阅读API文档,找到你想要的方法):https://kjur.github.io/jsrsasign/api/index.html</p>
    <p>第三步:仔细阅读本示例代码及注释内容</p>
    <el-upload
      class="uploadFile"
      ref="upload"
      drag
      action="aa"
      :on-change="onChange"
      :auto-upload="false"> <!-- 文件只需要到达浏览器然后运算即可,不需要到达后端,所以这里不需要上传到某个地址, 也不需要自动上传到服务器 -->
      <i class="el-icon-upload"></i>
      <div class="el-upload__text">将要文件拖到此处,或<em>点击上传</em></div>
      <div class="el-upload__tip line-height-none" slot="tip">推荐文件最大不超过10M</div>
    </el-upload>
  </div>
</template>


  import { X509 } from 'jsrsasign'
  export default {
    data () {
      return {
        uploadFileNum: '',
        fileNameList: []
      }
    },
    methods: {
      onChange(file) {
        // console.log(file.raw) // file.raw才是真实的文件对象,从中可以获取很多文件的信息
        let reader = new FileReader()

        // 定义证书对象
        let cert = new X509()

        reader.onload = function () {
          // 这里的reader.result就是文件的文本格式内容
          // console.log(reader.result)

          // 将PEM格式的证书数据读取到证书对象中
          // 经过测试,这个读取pem格式证书的方法,也支持读取 附带有证书内容的PEM格式证书
          cert.readCertPEM(reader.result)
          // 打印证书的subject各个字段信息
          // ds表示编码格式,type表示是哪个字段,value表示字段的值
          cert.getSubject().array.forEach(e => {
            console.log('ds: ' + e[0].ds + ', type: ' + e[0].type + ', value: ' + e[0].value)
            }
          )
        }
        reader.readAsText(file.raw)
      }
    }
  }

补充

完整项目的地址:https://github.com/17lhf/vue-happy-test,欢迎前去查看是否有遗漏或者bug或者clone下来检验

如果你觉得本文对你有所收获,请点赞转发,让更多人看到这篇文章,谢谢!!!

如果你觉得有哪里不对,也欢迎在评论区留言指教!!!



Comment