Electron-cer 跨平台证书安装
简介
这是一份关于证书安装的教程,采用electron去实现跨平台证书安装。
shell 命令
mac
列出证书
sudo security dump-keychain /Library/Keychains/System.keychain
安装证书
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/cer.crt
删除证书
sudo security delete-certificate -c “OK Group Certificate Authority”
linux
列出证书
ls /usr/local/share/ca-certificates/
安装证书
拷贝证书到【目录:/usr/local/share/ca-certificates/】
命令: sudo cp cer.crt /usr/local/share/ca-certificates/foo.crt
更新 CA 证书数据库存储:sudo update-ca-certificates
删除证书
把证书从【目录:/usr/local/share/ca-certificates/】中删除
命令: sudo rm /usr/local/share/ca-certificates/cer.crt
更新 CA 证书数据库存储:sudo update-ca-certificates –fresh
linux (centos 6)
列出证书
ls /etc/pki/ca-trust/source/anchors/
安装证书
安装 ca-certificates 包: yum install ca-certificates
启用动态 CA 配置功能: update-ca-trust force-enable
将其作为新文件添加到【目录:/etc/pki/ca-trust/source/anchors/】 中
命令:cp OK_Group_OA.crt /etc/pki/ca-trust/source/anchors/
更新证书存储:update-ca-trust extract
删除证书
把证书从【目录:/etc/pki/ca-trust/source/anchors/】中删除
命令: sudo rm /etc/pki/ca-trust/source/anchors/cer.crt
更新 CA 证书数据库存储:sudo update-ca-trust extract
linux (centos 5)
列出证书
列出证书功能 需要去 ca-bundle.crt 文件中查看。
安装证书
把可信证书附加到【文件:/etc/pki/tls/certs/ca-bundle.crt】 中,也就是追加到文本末尾
命令:cat OK_Group_OA.crt >>/etc/pki/tls/certs/ca-bundle.crt
删除证书
把 OK_Group_OA.crt 的内容删除掉,即可。
vim /etc/pki/tls/certs/ca-bundle.crt
删除完, :wq 保存
windows-10 || windows-7
列出证书
cmd 运行 certmgr.msc
安装证书
certutil -addstore -f “ROOT” cer.crt
删除证书
certutil -delstore “ROOT” serial-number-hex
安装证书核心代码
证书类,提供了安装证书的功能,内部去判断所在的操作系统。
1 | const { app } = require("electron"); |
坑无敌
shell 读取 assar 资源
问题:
在进行安装时,出现了读取资源失败的问题。通过查阅官方文案,发现时 assar 中的资源不支持通过shell 管道的形式获取资源。
解决:
在进行安装时,先吧=把资源从assar中拷贝到 assar 外的目录下。这里我吧目录放在了用户目录下,通过 app.getPath(‘userData’) 该方法去获取每个操作系统的用户目录。
开发与运行环境对文件的依赖
问题:
由于路径在开发与运行时都是相对的一个路径,所以在打包后,运行时无法找到 icon\证书等文件。
解决:
在开发时提供一份资源目录,生成环境打包的地方再次提供一份目录,目前虽然解决。但是还是需要升级下解决方案!
安装证书成功、失败、强制安装新证书
问题:
在安装了证书的用户电脑上,如果重新安装时,是无法进行安装的。
解决:
使用electron-store数据配置模块,去记录该电脑的操作。如果用户安装了就保存 value:1,失败为 2。但是如果再次发布新的版本时,安装成功的 value 值就需要重新改变。该值计次叠加!
1 | componentDidMount() { |
在这,我把每次安装成功使用过的值都放入**[undefined, 2, 1]**这里。使得每次发布的新版本。用户在使用时可以安装到心得证书!