証明書の準備(認証局への署名リクエストを行わず自己署名証明書を使用する場合)

opensslを利用し、自己署名証明書を作成する手順を説明します。

  • 自己署名証明書は、テスト目的や限られた利用者が使用する場合など、認証局(CA)の署名を必要としない場合に使用します。
  • 自己署名証明書でSSTPを運用する場合は、クライアント端末にもそれぞれ証明書をインポートする必要があります。
  • この手順により、RSA秘密鍵、証明書(自己署名)、および署名リクエスト(CSR)が作成されます。
  • opensslコマンドが使用可能なPC等が用意してあるものとします。
  1. 設定パラメータを用意する
    表 1. 用意する情報
    項目 備考
    Country Name: JP ISOによる2文字の国名符号
    State or Province Name: Tokyo 都道府県名
    Locality Name: Chiyoda 市区町村
    Organization Name: Example inc. 組織名
    Common Name: vpn.example.jp サーバ名【重要】
    • ここで指定する文字列をFQDNとしてSEILにアクセス可能である必要があります。(DNSのAレコード登録やPCのhostsデータベース登録など)
    • DNSやhostsが利用できない場合は、FQDNではなくIPアドレスを指定してください。
  2. RSA秘密鍵を作成する
    $ openssl genrsa -out rsa-secret.key 1024
    Generating RSA private key, 1024 bit long modulus
    .................................++++++
    .................................++++++
    e is 65537 (0x10001)
    $
    
    【内容の確認】
    $ cat rsa-secret.key
    -----BEGIN RSA PRIVATE KEY-----
    MIICXAIBAAKBgQC9mu5FBa5TR35uZpEiG4ZAQ54KqMaG7ZOGF+qe3gZ54oLLyqrz
    /hx2ehx7tlr+3Ty7EgfDO5r2gbpsXXgp2Vs1jRUfU6MDEdA0NE9Qth9GUm6VeEjD
    - 省略 -
    LKc9054WTDZ2I4zjA1UCQEaYLzJGIS11DV7ogNeaxrBnQjSG8h1dXC5dDe5oH9o0
    ku+PPXWVbD5tjVoFigQPIPvyrMLxlNkhC+mUuba23c0=
    -----END RSA PRIVATE KEY-----
    
    $
    • RSA秘密鍵のファイル名は"rsa-secret.key"としています。
    • 鍵長は1024bitとしています
    注: RSA秘密鍵は厳重に管理してください。
  3. 署名リクエスト(CSR)の作成
    $ openssl req -new -x509 -days 30 -key rsa-secret.key -out request.csr
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [GB]:JP
    State or Province Name (full name) [Berkshire]:Tokyo
    Locality Name (eg, city) [Newbury]:Chiyoda
    Organization Name (eg, company) [My Company Ltd]:Example inc.
    Organizational Unit Name (eg, section) []:
    Common Name (eg, your name or your server's hostname) []:vpn.example.jp
    Email Address []:
    $
    
    【内容の確認】
    $ cat request.csr
    -----BEGIN CERTIFICATE-----
    MIIDATCCAmqgAwIBAgIJAKyVK048BWqiMA0GCSqGSIb3DQEBBQUAMF8xCzAJBgNV
    BAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzEQMA4GA1UEBxMHQ2hpeW9kYTEVMBMGA1UE
    - 省略 -
    KMGKqx1E3sc8IjhTjvRmpRqo0DhNKdDHMIKemhxr18VyCppGlPnTp+I2Sf5/XubR
    uo9TLRU=
    -----END CERTIFICATE-----
    $
    • 使用する秘密鍵に2で作成したファイルを指定します。
    • 署名リクエストのファイル名は"request.csr"としています。
    • "-days"には証明書の有効期間を指定します。
    • コマンドを実行するとリクエストに必要な情報の入力を求められますので、表 1で用意した文字列を入力していきます。
  4. 証明書の作成
    $ openssl x509 -in request.csr -out certificate.crt
    $
    
    【内容の確認】
    $ openssl x509 -in certificate.crt -text
    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number:
                ac:95:2b:4e:3c:05:6a:a2
            Signature Algorithm: sha1WithRSAEncryption
            Issuer: C=JP, ST=Tokyo, L=Chiyoda, O=Example inc., CN=vpn.example.jp
            Validity
                Not Before: Oct  6 11:06:22 2011 GMT
                Not After : Nov  5 11:06:22 2011 GMT
            Subject: C=JP, ST=Tokyo, L=Chiyoda, O=Example inc., CN=vpn.example.jp
            Subject Public Key Info:
                Public Key Algorithm: rsaEncryption
                RSA Public Key: (1024 bit)
                    Modulus (1024 bit):
                        00:bd:9a:ee:45:05:ae:53:47:7e:6e:66:91:22:1b:
                        78:29:d9:5b:35:8d:15:1f:53:a3:03:11:d0:34:34:
                         - 省略 -
                        5a:fe:dd:3c:bb:12:07:c3:3b:9a:f6:81:ba:6c:5d:
                        bf:63:83:d5:bc:63:82:40:0b
                    Exponent: 65537 (0x10001)
            X509v3 extensions:
                X509v3 Subject Key Identifier:
                    F6:C4:7C:EE:D5:1E:E2:E5:7A:A1:20:E5:21:95:7B:0C:84:35:D2:48
                X509v3 Authority Key Identifier:
                    keyid:F6:C4:7C:EE:D5:1E:E2:E5:7A:A1:20:E5:21:95:7B:0C:84:35:D2:48
                    DirName:/C=JP/ST=Tokyo/L=Chiyoda/O=Example inc./CN=vpn.example.jp
                    serial:AC:95:2B:4E:3C:05:6A:A2
    
                X509v3 Basic Constraints:
                    CA:TRUE
        Signature Algorithm: sha1WithRSAEncryption
            8d:48:5e:ef:69:6b:24:2a:ed:7f:f0:c7:26:10:ae:06:65:3f:
              - 省略 -
            0a:9a:46:94:f9:d3:a7:e2:36:49:fe:7f:5e:e6:d1:ba:8f:53:
            2d:15
    -----BEGIN CERTIFICATE-----
    MIIDATCCAmqgAwIBAgIJAKyVK048BWqiMA0GCSqGSIb3DQEBBQUAMF8xCzAJBgNV
    BAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzEQMA4GA1UEBxMHQ2hpeW9kYTEVMBMGA1UE
     - 省略 -
    KMGKqx1E3sc8IjhTjvRmpRqo0DhNKdDHMIKemhxr18VyCppGlPnTp+I2Sf5/XubR
    uo9TLRU=
    -----END CERTIFICATE-----
    $
    • 3で作成した署名リクエストファイルを指定します。
    • 証明書のファイル名は"certificate.crt"としています。

以上で自己署名証明書の作成は終了です。

作成したファイルの用途

rsa-secret.key
RSA秘密鍵としてSEILに登録します。改ざんや紛失の無いよう厳重に管理する必要があります。
certificate.crt
証明書としてSEILに登録します。また、SSTPクライアントの証明書ストアにインポートします。
request.csr
SEILのコンフィグレーションには使用しません。証明書作成後は不要です。