证书的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文件相关推荐

  1. DotNetty TLS 开启双向认证加密传输数据

    这里写目录标题 DotNetty TLS 开启双向认证加密传输数据 一.生成PFX证书 二.服务器端 2.1 引用Nuget: 2.2 创建处理请求类 2.3 注册DotNetty监听服务 三.客户端 ...

  2. windows 下 nginx 双向认证自签名证书配置

    1. 创建根证书密钥.服务器证书私钥.客户端证书私钥: openssl genrsa -out root.key 2048 openssl genrsa -out server.key 2048 op ...

  3. AIRSDK 3.7 加载远程的含有代码的swf文件

    http://cenfee.com/?p=679 之前就说这个版本会解决可以加载远程的含有代码的swf文件的需求.但是,一直比较好奇这个是否行得通,还以为 Adobe 副总裁去了苹果,内部给了特殊待遇 ...

  4. 加载cad菜单(.mns .mnu .cuix文件)

    加载菜单 bool PhdUtility::LoadCadMenu(const CString& strMenuFileName, const CString& strMenuGrou ...

  5. c 和php 加密,加载由blenc加密的页面时出错(C和PHP代码)

    当我在Web服务器中加载以前使用BLENC加密的页面时,显示: Severity: Warning Message: blenc_compile: Validation of script 'path ...

  6. glide加载不了图片,证书问题

    问题:glide 加载不了这张图片:https://aliyun.vod.sgcctop.com/image/default/1A5EEAB153F549DF8C58CB6171273977-6-2. ...

  7. 网络安全进阶篇之免杀(十四章-5) Golang加载器CS免杀国内主流杀软

    文章目录 一. 概念 1.1 360 安全卫士和 360 杀毒 1.2 Golang 二.前期准备 2.1 下载地址 三.具体过程 3.1 使用CS生成payload 3.2 免杀过程 3.3 测试 ...

  8. Unity加载资源时的常用路径或文件夹

    加载资源或者下载资源时的常用路径,我们平常开发下用的是编辑器下的路径. 编辑器下使用的资源路径和Windows端打包后并没有什么区别.你在编辑器下写的资源路径代码,大概率是可以在Windows下无缝运 ...

  9. XP登录时提示“无法加载配置文件,找不到指定文件”

    出现这个问题是因为无法创建新的配置文件,所以本地计算机中没有配置文件的用户都无法登录,而有配置文件的用户就可以登录.因为创建新的用户配置文件时是把系统分区Documents and Settings文 ...

最新文章

  1. cifs------网络文件系统(2)
  2. 自制Flash FLV视频播放器
  3. 从oracle9i/92数据库中导出数据至 oracle 8.1.7 数据库中
  4. Makefile_02:程序的编译和链接
  5. 安卓开发之路-浅识Android
  6. Bit-Z如何注册?【新手操作指南】
  7. oracle cube排序,Oracle命令CUBE
  8. 利剑无意之如何判断一个数在40亿个整数中
  9. python 结巴分词(jieba)学习
  10. php soecket服务器搭建_PHP socket 服务器框架集
  11. java hibernate 表关联_Hibernate多表关联
  12. oracle数据泵导入分区表,Oracle 10g 数据泵分区表的导出
  13. 04-linux下离线安装Rserve
  14. pytorch torch.nn.RNN
  15. 英文语音识别_英文语音识别软件_英文语音识别翻译 - 云+社区 - 腾讯云
  16. atm系统的用例模型_ATM银行系统用例图.doc
  17. python bottle 终止返回_关于python的bottle框架跨域请求报错问题的处理
  18. 关于PLSQL的破解,按图输入即可
  19. 如何上传代码到github?
  20. HDOJ4699 Editor 栈

热门文章

  1. 我蛮喜欢的几首 五月天 的励志歌曲
  2. 卷积神经网络( CNN)与全卷积神经网络(FCN)
  3. Adversarial Learning
  4. decode函数的作用
  5. DECODE函数常用语法
  6. 数据库的范式,第一、二、三、四、五范式、BC范式,为什么分不清
  7. Kafka不丢失数据与不重复消费数据
  8. 欧几里得  拓展欧几里得算法 讲解 (Euclid Extend- Euclid Algorithm)
  9. 用python做网站开发的课程_腾讯课堂:Flask Python Web 网站开发
  10. Java并发编程(总结最全面的面试题)