生成公钥步骤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成公钥步骤相关的知识,希望对你有一定的参考价值。

参考技术A 1 先配下个人的用户名和邮箱。命令:

2 可通过命令 git config -l 查看配置的用户名和邮箱。

3 生产公钥。

输入完这个命令后,会有两个步骤,保存公钥的路径已经设置密码。
请大家忽略这两步,直接点击回车即可生成。

4生成的公钥默认路径在C:\Users\username.ssh目录下生成 id_rsa id_rsa.pub 两个文件。
将 id_rsa.pub复制一份即可 (上面有各自电脑文件的保存地址,具体地址根据实际情况)

从PEM格式证书和PEM格式公钥生成DER格式公钥

在被击中之前我做了以下步骤

1)我获得了服务器的证书

 s_client -connect hostname.org:443 -showcerts

证书看起来不错

-----BEGIN CERTIFICATE-----
MIIICTCCBvGgAwIBAgIQA8mdxgOCgSdtPdwJY/c3FzANBgkqhkiG9w0BAQsFADBk
MQswCQYDVQQGEwJOTDEWMBQGA1UECBMNTm9vcmQtSG9sbGFuZDESMBAGA1UEBxMJ
and so on
-----END CERTIFICATE-----

2)我把它保存为myCert.pem文件。(我不确定我是否应该将其保存为.cer文件)

3)我以PEM格式提取公钥,形成上面保存的证书文件,使用

openssl x509 -pubkey -noout -in myCert.pem > pubkey.pem

PEM格式的公钥也很好看

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwFQpwmpIDxhGeuKGxn1a
oWOytrvD5m6dQLv9EUEWkCZPNr48su3G2vGxWtUNNU5kA8lYxGo4kqo1R2J8nM6I
CXANY3tO6/j82AueiK93qTTFdJVDTjtYUd8CI9frzxQ+XyJvBeIj3l0tNLsND4HD
hSV+dteikKGiAwXOR0SA4pUyMCNuO1xqyK0YI2eZvQCOLpXd1DMyV7bmPUJINvwV
nT3iweeaBiX6HHXbSb/zHvAQZzOti939D/NTbLbJwSBYxnUR9uBR/JtcfZaoSjEa
1QHCIPgLJ2oQT/udCdb66IHEZfrjNHArQC3prXvuV25S043VlqssdVQnSz0bV+Tk
+CK3D2Ht42QKewVx6/uFzuf0btkMvhxvY6zLmM4UhRDFhMKbewsI9tAV7tKBdwtc
qYSuFvRLFdJWx1WsUsHhMWE34AVYUu/ocAOsiTBtsLfLR0OPNB05RZI7x6XJL3XV
PCnkIw4nfHf8fqyXfBkqkSBlNVL26t+bVW9E3ksl9eqh4VxZl6XGLOy0jBc8/96E
iRJaydsutraiqevdAwvRkebj2SR0pXLwigZFXm1hPSrtI7cuytsfqNE4DNwD+yQw
d/iMyiPgxG0Mv9fmmpx8VHNNkchhrtDRIvZx6C11eaZ0Ng7Y4JCFtnAfL3XbBCXB
Y8y052YLhGd+lE4/J76bAokCAwEAAQ==
-----END PUBLIC KEY-----

现在我正在尝试将此PEM格式公钥解码为der格式。我该怎么做?

答案

PEM编码文件是标题,页脚和base64编码的内容(对于证书和密钥和内容,它们是BER / DER编码数据)。

当OpenSSL写入数据时,它使用DER的约束(据我所见),因此对于OpenSSL编写的数据,您只需要对内容进行base64解码。 openssl base64 -d会这样做(忽略PEM页眉/页脚)

openssl base64 -d -in pubkey.key -out pubkey.der

如果您担心PEM内容是合法的BER而不是合法的DER(例如,它使用了无限长的构造值),您可以要求OpenSSL读取和写入它。

openssl rsa -pubin -in pubkey.key -outform der -out pubkey.der

或者,以编程方式

FILE* fp = fopen("pubkey.key", "r");
EVP_PKEY* pkey = PEM_read_PUBKEY(fp, NULL, NULL, NULL);
fclose(fp);
fp = fopen("pubkey.der", "wb");
i2d_PUBKEY_fp(fp, pkey);
fclose(fp);
EVP_PKEY_free(pkey);

可选择进行错误检查。

以上是关于生成公钥步骤的主要内容,如果未能解决你的问题,请参考以下文章

MAC生成公钥私钥

如何为公钥固定(SSL 固定)生成 iOS 证书

从PEM格式证书和PEM格式公钥生成DER格式公钥

githunb和码云生成/添加SSH公钥

Git SSL公钥密钥生成

码云(gitee)配置公钥 + 创建仓库