躓いたエラーメッセージ
CentOS7 で通じてたコマンド手順をそのまま CentOS8(Stream)で実行してたら、
opensslコマンドでPrivate Keyが読み込めず、嵌りそうになった。
openssl req -new -key ./hogehoge.key -out ./hogehohe.csr -config <(cat hogehoge.conf )
unable to load Private Key
139786302900032:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
原因
ssh-keygenで生成した秘密鍵がPEM形式ではなかった(OpenSSH形式だった) 似すぎじゃない!?
検索すると、”最終行に改行が必要”など出てきますが、
私の場合、そもそもOpenSSLコマンド用の鍵ファイル(PEMorDER)を用意できてなかっただけでした。
同じオプションでコマンド叩いても、CentOS7(openssh-7.x)と8(openssh-8.x)で生成される鍵のフォーマットが異なってました。
ssh-keygen -t rsa -b 2048 -f hogehoge.key
CentOS Stream 8 で生成したprivate key
[root@CENTOS8]# ssh-keygen -t rsa -b 2048 -f test.privatekey
<<...略...>>
[root@CENTOS8]# cat test.privatekey
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
<<...略...>>
RGUiA0rZ1SrmjbJZAwAAACByb290QGFuaW1hLmdmLWFkLmdvb2QtZmVlbC5jby5qcAE=
-----END OPENSSH PRIVATE KEY-----
[root@CENTOS8]#
[root@CENTOS8]# rpm -qa | grep ssh
openssh-askpass-8.0p1-12.el8.x86_64
openssh-server-8.0p1-12.el8.x86_64
qemu-kvm-block-ssh-6.2.0-5.module_el8.6.0+1087+b42c8331.x86_64
openssh-clients-8.0p1-12.el8.x86_64
libssh-config-0.9.6-3.el8.noarch
libssh-0.9.6-3.el8.x86_64
openssh-8.0p1-12.el8.x86_64
[root@CENTOS8]#
CentOS7 で生成したprivate key
[root@CENTOS7]# ssh-keygen -t rsa -b 2048 -f test.privatekey
<<...略...>>
[root@CENTOS7]# cat test.privatekey
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAzr/LLmd7DRByn0NoWUaY4VjEuTujFc27pXmF0X1q6xZW2/sh
<<...略...>>
k0pU7VAl/vOBwEif0cyhTk6Crnm734XiALYayNGumoO0aHnMV+hu+jI=
-----END RSA PRIVATE KEY-----
[root@CENTOS7]#
[root@CENTOS7]# rpm -qa | grep ssh
libssh2-1.8.0-4.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
[root@CENTOS7]#
解決方法
ssh-keygen にオプション「-m pem」を追加して生成すればOK
ssh-keygen -t rsa -m pem -b 2048 -f test.privatekey
[root@CENTOS8]# ssh-keygen -t rsa -m pem -b 2048 -f test.privatekey
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in test.privatekey.
Your public key has been saved in test.privatekey.pub.
The key fingerprint is:
SHA256:R1ZF916cKZ29GfcI65Ubee5D7AvynlNHGK1mq5vDxkY rootCENTOS8
The key's randomart image is:
+---[RSA 2048]----+
| .oo..|
| . ooB|
| o .. X*|
| o o*=O|
| S . .oB=+|
| . .E..O.|
| =.o= o|
| Xoo+ |
| o+*..+|
+----[SHA256]-----+
[root@CENTOS8]#
[root@CENTOS8]# cat test.privatekey
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAqkF3XJE1loUPMMZa0WVGfDWieSSLtCKlMvzBTenf7bF90pcZ
<<...略...>>
xbmtmvWEvWUfOBrftsU9nDCrhSr+mkawMemSi3dNUPwbH2z/ZR9z
-----END RSA PRIVATE KEY-----
[root@CENTOS8]#