私なりの探し方をまとめました。
ブラウザの場合
ブラウザの鍵マークをクリック>証明書>証明書のパス>一番上の証明書をクリック>証明書の表示
でルート証明書が見れます。
ルート証明書のダウンロード(エクスポート)も「詳細」タブの「ファイルにコピー」でできます。
エクスポートするときのファイル形式は、
- DER形式(DER encoded binary X.509)
- PEM形式(Base 64 encoded X.509)
- P7B形式(Cryptographic Message Syntax Standard)
の3種類から選べます。
ブラウザ以外の場合
ルート証明書の名前がわかっている場合
「[ルート証明書名 or 企業名] root certificate」等でググって、ダウンロードできるサイトを探します。
「GlobalSign Root CA - R2 root certificate」とかで検索して探します。
ルート証明書/中間CA証明書(SSLサーバ証明書) | GMOグローバルサイン サポート
ルート証明書を発行しているCA認証局は大体サイトからダウンロードできるようにしてくれているので頑張って探します。
ルート証明書の名前がわかっていない場合
OpenSSLを使います。
まず、openssl
コマンドを使ってサーバとTLSなりSTARTTLSなりで通信をします。その際に-showcerts
オプションを指定すると証明書チェーンが表示されるので、それを見ればルート証明書がわかります。
以下ではGmailのSMTPサーバ(smtp.gmail.com
)のルート証明書を探します。
> openssl s_client -connect smtp.gmail.com:587 -starttls smtp -showcerts CONNECTED(000001C0) depth=1 C = US, O = Google Trust Services, CN = GTS CA 1O1 verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = smtp.gmail.com verify return:1 --- Certificate chain 0 s:C = US, ST = California, L = Mountain View, O = Google LLC, CN = smtp.gmail.com i:C = US, O = Google Trust Services, CN = GTS CA 1O1 -----BEGIN CERTIFICATE----- MIIEyDCCA7CgAwIBAgIQSzhrqklQvncCAAAAAHpLZDANBgkqhkiG9w0BAQsFADBC MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVR29vZ2xlIFRydXN0IFNlcnZpY2VzMRMw EQYDVQQDEwpHVFMgQ0EgMU8xMB4XDTIwMDkwMzA2NDA0NloXDTIwMTEyNjA2NDA0 NlowaDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcT DU1vdW50YWluIFZpZXcxEzARBgNVBAoTCkdvb2dsZSBMTEMxFzAVBgNVBAMTDnNt dHAuZ21haWwuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDhITcefeUMYB +nyn2h4okLuNeiWVUHA8WiGU7RQO0hcmhB5wujB7Pl8jYgIXHoOzRRmywIDIFp+V wCQ5cFR5SaOCAl0wggJZMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEF BQcDATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSHRBeWPUXeRH3cDglYzWu9AJcW cTAfBgNVHSMEGDAWgBSY0fhuEOvPm+xgnxiQG6DrfQn9KzBoBggrBgEFBQcBAQRc MFowKwYIKwYBBQUHMAGGH2h0dHA6Ly9vY3NwLnBraS5nb29nL2d0czFvMWNvcmUw KwYIKwYBBQUHMAKGH2h0dHA6Ly9wa2kuZ29vZy9nc3IyL0dUUzFPMS5jcnQwGQYD VR0RBBIwEIIOc210cC5nbWFpbC5jb20wIQYDVR0gBBowGDAIBgZngQwBAgIwDAYK KwYBBAHWeQIFAzAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLnBraS5nb29n L0dUUzFPMWNvcmUuY3JsMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcAB7dcG+V9 aP/xsMYdIxXHuuZXfFeUt2ruvGE6GmnTohwAAAF0UuksiAAABAMASDBGAiEAiN7n z854FQrffyjPiAHQWjkKnBIPaxA08/CifmKCaHUCIQCLc14iC3ac5WgDubjkXITa SmlaVemO1Ix3eAa3g6N7kwB2AOcS8rA3fhpi+47JDGGE8ep7N8tWHREmW/Pg80vy QVRuAAABdFLpLF8AAAQDAEcwRQIga/yh3rUb4L/1fkTTgmEMQqS/0QAmQvJfNsJr GSwgc+oCIQD+TVQ1RU7r6ylJsPJ68N4nAZphIBMgK1fLNHfSZ3F2aTANBgkqhkiG 9w0BAQsFAAOCAQEApjaqg8SqdbyYQyck3mGS9BNytzqrbUqYqmto6KcIJvuXx83I HDJgbSJ+u1ukUZNxs2r5D2zi5sckwu7XUJKjakz+M2gafXy6i8l3LYQQ7dawuIJa CkkdurNlYnXqfjt1ZXLhSlmj9AF/PqKEyE0p3aBcLRbDyBkPIbPRR9QnOt6cE3rV q8wtfzwq6qSa8e2TVe6b7pSLMMe1aVcyBY6mrXyKxcz13KwiheUg8CicptkAPBoy w757azBTSjyPEfEpT5IomANb9AUJx4ijhyvV9MXchbNwLkhktiR9QW29VkSlXSBb tIUdHACgD69wvelpVJlyFG/aYmWeeweg5aWFNQ== -----END CERTIFICATE----- 1 s:C = US, O = Google Trust Services, CN = GTS CA 1O1 i:OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign -----BEGIN CERTIFICATE----- MIIESjCCAzKgAwIBAgINAeO0mqGNiqmBJWlQuDANBgkqhkiG9w0BAQsFADBMMSAw HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFs U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xNzA2MTUwMDAwNDJaFw0yMTEy MTUwMDAwNDJaMEIxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVHb29nbGUgVHJ1c3Qg U2VydmljZXMxEzARBgNVBAMTCkdUUyBDQSAxTzEwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQDQGM9F1IvN05zkQO9+tN1pIRvJzzyOTHW5DzEZhD2ePCnv UA0Qk28FgICfKqC9EksC4T2fWBYk/jCfC3R3VZMdS/dN4ZKCEPZRrAzDsiKUDzRr mBBJ5wudgzndIMYcLe/RGGFl5yODIKgjEv/SJH/UL+dEaltN11BmsK+eQmMF++Ac xGNhr59qM/9il71I2dN8FGfcddwuaej4bXhp0LcQBbjxMcI7JP0aM3T4I+DsaxmK FsbjzaTNC9uzpFlgOIg7rR25xoynUxv8vNmkq7zdPGHXkxWY7oG9j+JkRyBABk7X rJfoucBZEqFJJSPk7XA0LKW0Y3z5oz2D0c1tJKwHAgMBAAGjggEzMIIBLzAOBgNV HQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1Ud EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFJjR+G4Q68+b7GCfGJAboOt9Cf0rMB8G A1UdIwQYMBaAFJviB1dnHB7AagbeWbSaLd/cGYYuMDUGCCsGAQUFBwEBBCkwJzAl BggrBgEFBQcwAYYZaHR0cDovL29jc3AucGtpLmdvb2cvZ3NyMjAyBgNVHR8EKzAp MCegJaAjhiFodHRwOi8vY3JsLnBraS5nb29nL2dzcjIvZ3NyMi5jcmwwPwYDVR0g BDgwNjA0BgZngQwBAgIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9wa2kuZ29vZy9y ZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAGoA+Nnn78y6pRjd9XlQWNa7H TgiZ/r3RNGkmUmYHPQq6Scti9PEajvwRT2iWTHQr02fesqOqBY2ETUwgZQ+lltoN FvhsO9tvBCOIazpswWC9aJ9xju4tWDQH8NVU6YZZ/XteDSGU9YzJqPjY8q3MDxrz mqepBCf5o8mw/wJ4a2G6xzUr6Fb6T8McDO22PLRL6u3M4Tzs3A2M1j6bykJYi8wW IRdAvKLWZu/axBVbzYmqmwkm5zLSDW5nIAJbELCQCZwMH56t2Dvqofxs6BBcCFIZ USpxu6x6td0V7SvJCCosirSmIatj/9dSSVDQibet8q/7UK4v4ZUN80atnZz1yg== -----END CERTIFICATE----- ...
このCertificate chain以下に注目します。「0」と「1」の2つの証明書情報がぶら下がっているのが見つかります(中間証明書がある場合は2とかにもなる)。
0 s:C = US, ST = California, L = Mountain View, O = Google LLC, CN = smtp.gmail.com i:C = US, O = Google Trust Services, CN = GTS CA 1O1
1 s:C = US, O = Google Trust Services, CN = GTS CA 1O1 i:OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
数字が大きいほうがルート証明書に近くなります。今回は「1」がルート証明書です。sはsubject(証明対象)でiはissuer(発行者)を意味します。ルート証明書の発行者がCA認証局なので、「GlobalSign」がCA認証局です。
ルート証明書「GlobalSign Root CA - R2」は、-----BEGIN CERTIFICATE-----
と-----END CERTIFICATE-----
で囲まれたものが証明書になります。
1 s:C = US, O = Google Trust Services, CN = GTS CA 1O1 i:OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign -----BEGIN CERTIFICATE----- MIIESjCCAzKgAwIBAgINAeO0mqGNiqmBJWlQuDANBgkqhkiG9w0BAQsFADBMMSAw HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFs U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xNzA2MTUwMDAwNDJaFw0yMTEy MTUwMDAwNDJaMEIxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVHb29nbGUgVHJ1c3Qg U2VydmljZXMxEzARBgNVBAMTCkdUUyBDQSAxTzEwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQDQGM9F1IvN05zkQO9+tN1pIRvJzzyOTHW5DzEZhD2ePCnv UA0Qk28FgICfKqC9EksC4T2fWBYk/jCfC3R3VZMdS/dN4ZKCEPZRrAzDsiKUDzRr mBBJ5wudgzndIMYcLe/RGGFl5yODIKgjEv/SJH/UL+dEaltN11BmsK+eQmMF++Ac xGNhr59qM/9il71I2dN8FGfcddwuaej4bXhp0LcQBbjxMcI7JP0aM3T4I+DsaxmK FsbjzaTNC9uzpFlgOIg7rR25xoynUxv8vNmkq7zdPGHXkxWY7oG9j+JkRyBABk7X rJfoucBZEqFJJSPk7XA0LKW0Y3z5oz2D0c1tJKwHAgMBAAGjggEzMIIBLzAOBgNV HQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1Ud EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFJjR+G4Q68+b7GCfGJAboOt9Cf0rMB8G A1UdIwQYMBaAFJviB1dnHB7AagbeWbSaLd/cGYYuMDUGCCsGAQUFBwEBBCkwJzAl BggrBgEFBQcwAYYZaHR0cDovL29jc3AucGtpLmdvb2cvZ3NyMjAyBgNVHR8EKzAp MCegJaAjhiFodHRwOi8vY3JsLnBraS5nb29nL2dzcjIvZ3NyMi5jcmwwPwYDVR0g BDgwNjA0BgZngQwBAgIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9wa2kuZ29vZy9y ZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAGoA+Nnn78y6pRjd9XlQWNa7H TgiZ/r3RNGkmUmYHPQq6Scti9PEajvwRT2iWTHQr02fesqOqBY2ETUwgZQ+lltoN FvhsO9tvBCOIazpswWC9aJ9xju4tWDQH8NVU6YZZ/XteDSGU9YzJqPjY8q3MDxrz mqepBCf5o8mw/wJ4a2G6xzUr6Fb6T8McDO22PLRL6u3M4Tzs3A2M1j6bykJYi8wW IRdAvKLWZu/axBVbzYmqmwkm5zLSDW5nIAJbELCQCZwMH56t2Dvqofxs6BBcCFIZ USpxu6x6td0V7SvJCCosirSmIatj/9dSSVDQibet8q/7UK4v4ZUN80atnZz1yg== -----END CERTIFICATE-----
ちなみにこの-----BEGIN CERTIFICATE-----
と-----END CERTIFICATE-----
で囲まれた形式をPEM形式と呼びます(Base64でエンコードされてる形式)。
証明書のエンコード形式の変換
おまけとして、PEM形式の証明書とDER形式の証明書の変換方法を記載します。
PEMからDERへ変換
PEM形式server.pem.crt
を、DER形式server.der.crt
に変換する。
> openssl x509 -inform PEM -in server.pem.crt -outform DER -out server.der.crt
DERからPEMへ変換
DER形式server.der.crt
を、PEM形式server.pem.crt
に変換する。
> openssl x509 -inform DER -in server.der.crt -outform PEM -out server.pem.crt