如何自定义秘钥对儿
先说:
强烈建议各位都自定义生成一个秘钥对儿,不要使用项目默认的秘钥对儿。
有朋友在部署项目的时候,想要自定义加密认证的秘钥对,本来来讲下如何配置。
此问题首问于:https://github.com/eryajf/go-ldap-admin/issues/135 (opens new window)
# 哪里用到了
要想自定义秘钥对,首先我们需要知道哪里用到了,这样正确地配置自定义的秘钥,从而正常使用。
# 后端
在后端的配置文件config.yml
中,我们看到这两个配置项:
# rsa公钥文件路径(config.yml相对路径, 也可以填绝对路径)
rsa-public-key: go-ldap-admin-pub.pem
# rsa私钥文件路径(config.yml相对路径, 也可以填绝对路径)
rsa-private-key: go-ldap-admin-priv.pem
1
2
3
4
2
3
4
那么新的秘钥对就要替换如上两个文件的内容。
# 前端
有的同学只替换了后端,导致请求的时候,用户密码验证失败,其实前端也用到了,用到了公钥,从而用户在登陆的时候,前端发给后端的请求中,能够将用户密码加密传输,而非明文传输。
前端的 .env.development
配置文件中存储:
VUE_APP_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7DSaq24RM3FdYQumg7DQPpif8sS6HOjtNAGhUN8oW9Gh4aIRZICxUi3RMywGZPZJiw6hAgnEKBYr3YbqcMgiaMvybyUCBR8tjtNx+vh8dg8b/5C/jmjk5tQg9bKG78LF+xdpbWIi/5RvMP8k6S2DID/z97s9yW8d3K8j/IUWhgwIDAQAB-----END PUBLIC KEY-----"
1
当然线上的话,文件应该是 .env.production
。
**注意:
**如上配置存储的是公钥内容,可以将公钥内容合并成单行作为一个字符串,放到配置文件当中。
# 如何自定义
通过如下两条命令可以生成自定义的秘钥对:
$ openssl genrsa -out go-ldap-admin-priv.pem 1024
$ openssl rsa -in go-ldap-admin-priv.pem -pubout -out go-ldap-admin-pub.pem
1
2
2
然后把生成的两个文件放到后端的二进制同级目录下,把公钥的内容,配置到前端的配置文件中,然后重新部署项目。
# 注意事项
自定义秘钥的过程中,有以下注意事项:
- 前后端配置文件中的秘钥对一定要对应上,否则会在登陆的时候出现密码校验失败的情况。
- 配置完自定义的秘钥对之后,需要把数据库清空,让数据基于新的秘钥重新初始化,否则数据库存储的基于老秘钥加密的密码,用新的秘钥验证的时候,仍然会报密码验证失败的情况。
- 另外需要注意的就是,自定义秘钥之后,就不能再使用项目后续更新的前后端镜像,而需要自己构建镜像来进行更新了。
帮助我们改善此页面 (opens new window)
上次更新: 2022/12/16, 18:09:22