golang加载双向认证加密的证书key文件
证书的key是可以加密保存的,我们需要进行解密加载
func MyLoadX509KeyPair(certFile, keyFile, password string) (tls.Certificate, error) {certPEMByte, err := ioutil.ReadFile(certFile)if err != nil {return tls.Certificate{}, err}keyPEMByte, err := ioutil.ReadFile(keyFile)if err != nil {glog.Errorf("read %s failed! err: %s", keyFile, err)return tls.Certificate{}, err}keyPEMBlock, rest := pem.Decode(keyPEMByte)if len(rest) > 0 {glog.Errorf("Decode key failed!")return tls.Certificate{}, errors.Errorf("Decode key failed!")}if x509.IsEncryptedPEMBlock(keyPEMBlock) {keyDePEMByte, err := x509.DecryptPEMBlock(keyPEMBlock, []byte(password))if err != nil {glog.Errorf("decrypt failed! %s", err)return tls.Certificate{}, err}// 解析出其中的RSA 私钥key, err := x509.ParsePKCS1PrivateKey(keyDePEMByte)if err != nil {glog.Errorf("ParsePKCS1PrivateKey failed! %s", err)return tls.Certificate{}, err}// 编码成新的PEM 结构keyNewPemByte := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY",Bytes: x509.MarshalPKCS1PrivateKey(key),},)return tls.X509KeyPair(certPEMByte, keyNewPemByte)} else {return tls.X509KeyPair(certPEMByte, keyPEMByte)}
}
证书key进行增加密码或者去掉密码的操作方式
1、检测ssl.key 密码是否正确
openssl rsa -text -noout -in server.key 命令输出: Private-Key: (2048 bit) modulus: 00:b0:fd:c2:81:60:3f:d2:dc:fe:2d:34:c6:46:1e: 08:72:c3:78:f3:4d:12:16:b9:39:3e:0b:d3:8b:e7: ...
2 . 给server.key 添加密码
openssl rsa -des -in server.key -out encrypt.key 输出: writing RSA key Enter PEM pass phrase: 密码 Verifying - Enter PEM pass phrase: 再次输入密码 encrypt.key 这个文件就是加密过的key
3. 去掉密码
encrypt.key 加密KEY nopassword.key 无加密 #openssl rsa -in encrypt.key -out nopassword.key writing RSA key Enter PEM pass phrase: 密码 Verifying - Enter PEM pass phrase: 再次输入密码
golang加载双向认证加密的证书key文件相关推荐
- DotNetty TLS 开启双向认证加密传输数据
这里写目录标题 DotNetty TLS 开启双向认证加密传输数据 一.生成PFX证书 二.服务器端 2.1 引用Nuget: 2.2 创建处理请求类 2.3 注册DotNetty监听服务 三.客户端 ...
- windows 下 nginx 双向认证自签名证书配置
1. 创建根证书密钥.服务器证书私钥.客户端证书私钥: openssl genrsa -out root.key 2048 openssl genrsa -out server.key 2048 op ...
- AIRSDK 3.7 加载远程的含有代码的swf文件
http://cenfee.com/?p=679 之前就说这个版本会解决可以加载远程的含有代码的swf文件的需求.但是,一直比较好奇这个是否行得通,还以为 Adobe 副总裁去了苹果,内部给了特殊待遇 ...
- 加载cad菜单(.mns .mnu .cuix文件)
加载菜单 bool PhdUtility::LoadCadMenu(const CString& strMenuFileName, const CString& strMenuGrou ...
- c 和php 加密,加载由blenc加密的页面时出错(C和PHP代码)
当我在Web服务器中加载以前使用BLENC加密的页面时,显示: Severity: Warning Message: blenc_compile: Validation of script 'path ...
- glide加载不了图片,证书问题
问题:glide 加载不了这张图片:https://aliyun.vod.sgcctop.com/image/default/1A5EEAB153F549DF8C58CB6171273977-6-2. ...
- 网络安全进阶篇之免杀(十四章-5) Golang加载器CS免杀国内主流杀软
文章目录 一. 概念 1.1 360 安全卫士和 360 杀毒 1.2 Golang 二.前期准备 2.1 下载地址 三.具体过程 3.1 使用CS生成payload 3.2 免杀过程 3.3 测试 ...
- Unity加载资源时的常用路径或文件夹
加载资源或者下载资源时的常用路径,我们平常开发下用的是编辑器下的路径. 编辑器下使用的资源路径和Windows端打包后并没有什么区别.你在编辑器下写的资源路径代码,大概率是可以在Windows下无缝运 ...
- XP登录时提示“无法加载配置文件,找不到指定文件”
出现这个问题是因为无法创建新的配置文件,所以本地计算机中没有配置文件的用户都无法登录,而有配置文件的用户就可以登录.因为创建新的用户配置文件时是把系统分区Documents and Settings文 ...
最新文章
- cifs------网络文件系统(2)
- 自制Flash FLV视频播放器
- 从oracle9i/92数据库中导出数据至 oracle 8.1.7 数据库中
- Makefile_02:程序的编译和链接
- 安卓开发之路-浅识Android
- Bit-Z如何注册?【新手操作指南】
- oracle cube排序,Oracle命令CUBE
- 利剑无意之如何判断一个数在40亿个整数中
- python 结巴分词(jieba)学习
- php soecket服务器搭建_PHP socket 服务器框架集
- java hibernate 表关联_Hibernate多表关联
- oracle数据泵导入分区表,Oracle 10g 数据泵分区表的导出
- 04-linux下离线安装Rserve
- pytorch torch.nn.RNN
- 英文语音识别_英文语音识别软件_英文语音识别翻译 - 云+社区 - 腾讯云
- atm系统的用例模型_ATM银行系统用例图.doc
- python bottle 终止返回_关于python的bottle框架跨域请求报错问题的处理
- 关于PLSQL的破解,按图输入即可
- 如何上传代码到github?
- HDOJ4699 Editor 栈