• Ubuntuに関連したハード、ソフトの備忘録サイトです

サイトのセキュア化(https化)について(投稿記事確認中)

このserver.csrを認証局に送ると、販売代理店経由でサーバー証明書combined.pemを入手できます。そのまま、combined.pemを使えれば良いのですが、認証局が公開している中間証明書dvcacert.cerと結合する必要が有ります。この時、大概はcatコマンドを使って次のように行います。その前に、combined.pemのバックアップをとっておきましょう。combined.pem.bakなどです。

そうして、一般的には次のようにして結合します。

# cat combined.pem dvcacert.cer > combined.crt

このcombined.crtをserver-nopwd.keyと組み合わせて、Nginxの設定ファイルに組み込めばhttps化を実現できますよ、というのですが、ここに問題が出ます。結合ファイルcombined.crtの「改行コード」がおかしくなっているからです。

-----BEGIN CERTIFICATE-----
MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw
MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0
aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC
jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG
ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX
qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It
INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4
tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC
AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A
mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v
d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG
Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE
MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290
cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL
BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex
4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE
GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj
H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj
tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6
EjxS1QSCVS1npd+3lXzuP8MIugS+wEY=
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw
MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0
aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC
jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG
ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX
qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It
INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4
tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC
AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A
mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v
d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG
Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE
MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290
cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL
BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex
4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE
GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj
H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj
tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6
EjxS1QSCVS1npd+3lXzuP8MIugS+wEY=
-----END CERTIFICATE-----

というように、

-----END CERTIFICATE----------BEGIN CERTIFICATE-----

となっている場合が多いからです。この場合は、上記の一行を五つ目のハイフンのところで開業させる必要が有ります。ただし、改行させてもnginx -tでnginxの設定ファイル(バーチャル・ホスト化のための/etc/nginx/sites-avalable/default)をテストしても、エラーが出る場合が有ります。その場合は、combined.crtファイルを一行ずつ改行し直す必要が出てきます。 先に、defaultにどのようにSSL化を設定するかと申しますと、

server {
    listen 443;
    server_name www.it-ishin.com;

   ssl on;
   ssl_sertificate composed.crt
   ssl_sertificate_key server-nopwd.key
 .
 .
 .

となります。このくだりで、nginx -tで問題なければ、# systemctl restart nginxで正常にリスタートができることになります。なお、その前に、結合証明書と公開秘密鍵が合致しているかは、つぎのようなコマンドで調べることができます。

# cd /etc/ssl/private
# openssl rsa -in ./server-nopwd.key -modulus -noout | openssl md5
(stdin)= 091c2f5a4912d489c8dc76f1d7d6ecdb
# openssl x509 -in ./combined.crt-modulus -noout | openssl md5
(stdin)= 091c2f5a4912d489c8dc76f1d7d6ecdb

ここで出てくる文字列が囲みのように一致していれば、公開秘密鍵と認証局が発行したサーバー証明書の対応性に問題はありません。一致しなければ、その前にいろんなエラーが出ますが、たいていは、combined.crtのファイルの改行の問題です。どんなエラーが出てくるか、その例を挙げると例えば、

# cd /etc/ssl/private
# openssl x509 -text -noout -in ./composer.crt
unable to load certificate
140073891915416:error:0906D066:PEM routines:PEM_read_bio:bad end line:pem_lib.c:809:

といった意味不明のエラーです。検索エンジンには引っかかります。こうしたエラーが出た場合は、一行になった行を二行に分け、それでも、nginx -tやsystemctl restart nginxで意味不明のエラーが出る場合は、combined.crtを一度最上段の行から改行させると、うまく行くことがあります。サイト管理者のサイトはだいたい、そのような手を踏んで、https化しました。

セキュア通信化はWeb、メール、FTPなど時代の流れになっていますが、まあ、サーバー証明書発行会社には代理店(一般的にはレンタル・サーバー会社やドメイン発行会社)には、膨大な特需が入っているはずです。もっとも、翔泳社からUbuntuファンには待望の「Ubuntuサーバー入門徹底入門」(中島能和著)が発行されましたがその中の306ページ以降に、HTTPSの普及団体であるISRGが無償でサーバー証明書を発行する「Let’s Encrypt」についての説明が記載されています。ということで、認証局は価格体系を見直してほしいと思います。最も安価なサーバー証明書の発行会社は、株式会社日本レジストリサービス(JPRS)です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA