问题
创建一对适合DKIM
设置使用的密钥的正确方法是什么ssh-keygen
?
给出相应的解决方案openssl
:
# creates a private key
openssl genrsa -out sample.key 1024
# creates a public key
openssl rsa -in sample.key -pubout -out sample.pub
故事
我试图使用DKIM
以下过程生成密钥:
# creates a pair of keys: sample & sample.pub
ssh-keygen -m PEM -t rsa -b 1024 -f sample
# coverts the public key into the PEM format
ssh-keygen -f sample.pub -m PEM -e > sample.pem.pub
PEM
公钥内容示例:
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAOO3Emm+KdOKKhwlCjLXIE1R76KlWY6xSVfHsjE3uuMcF0BDKhJS2Kg3
WjhdnV2z5XAQDAxknQvx+sxxbsBye6Zc2VnNA9upDVVlNc4I6zl1N75CY7F1Nfbj
wDrpWqGJuBPsousqj79dJ/JM0pzCn71IkEumU2Ck3AULSnT9MLeZAgMBAAE=
-----END RSA PUBLIC KEY-----
构造DKIM
记录:
v=DKIM1; p=MIGJAoGBAOO3Emm+KdOKKhwlCjLXIE1R76KlWY6xSVfHsjE3uuMcF0BDKhJS2Kg3WjhdnV2z5XAQDAxknQvx+sxxbsBye6Zc2VnNA9upDVVlNc4I6zl1N75CY7F1NfbjwDrpWqGJuBPsousqj79dJ/JM0pzCn71IkEumU2Ck3AULSnT9MLeZAgMBAAE=
我使用https://dkimcore.org/c/keycheck来验证 DNS 记录,这使我无法获取所提供的值,并显示以下消息:
这似乎不是有效的 RSA 公钥: RSA.xs:178: OpenSSL error: bad tag at blib/lib/Crypt/OpenSSL/RSA.pm (自动分割成 blib/lib/auto/Crypt/OpenSSL/RSA /new_public_key.al) 第 91 行。
尝试过这些版本:
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
OpenSSH_9.4p1, OpenSSL 3.1.2 1 Aug 2023
openssl
幸运的是,我得到了上面提到的解决方法。但由于经常ssh-keygen
被 提到作为密钥生成的有效工具,我想知道到底是什么方法? DKIM
长话短说
生成一对密钥:
将公钥转换为以下
PKCS #8
格式:笔记
Internet 标准 RFC6376将 DKIM 记录的默认密钥类型指定为 RSA,并将相应的公钥数据指定为 base64 编码的 ASN.1 DER 编码的 RSAPublicKey。
对初始公钥的检查显示:
解决方案结果的检查:
显示:
这实际上是密钥所需的包装。
BIT STRING
18岁还可以检查:最新版本的 man 请
ssh-keygen
注意,使用-m PEM
将导致密钥以旧版 PEM 私钥格式存储。这也被称为OpenSSL 的 PEM 格式。很快就能注意到的差异在于标题标签。
-m PKCS8
产生:同时
-m PEM
:值得一提的是,拟议标准 RFC8301指出:
虽然仍然认识到应有方法的实际局限性:
因此,如果适用,应使用具有推荐位长度的方法: