Go to main content
Oracle® Solaris 11.3 での Secure Shell アクセスの管理

印刷ビューの終了

更新: 2017 年 3 月
 
 

SunSSH サーバー用の X.509 証明書を生成する方法

始める前に

クライアント上で、.ssh ディレクトリ内の known_hosts ファイルには、クライアントが認証するホストの公開鍵を識別するエントリが含まれていないことを確認します。

  1. サーバー上で pktool setpin コマンドを使用して、PIN (パスフレーズ) を初期化して PKCS #11 ソフトトークンキーストアに設定します。
    #  pktool setpin
         Enter token passphrase: changeme
         Create new passphrase:
         Re-enter new passphrase:
         Passphrase changed.

    PKCS #11 ソフトトークンキーストアは証明書および鍵を保存するために使用されます。ソフトトークンキーストアのデフォルトのパスフレーズは changeme です。

  2. サーバー上で、pktool gencert コマンドを使用してソフトトークンキーストア内に自己署名付き証明書と鍵のペアを生成します。

    結果として生成された証明書はこの手順でトラストアンカー証明書として使用されます。gencert サブコマンドを実行すると、ソフトトークンキーストア用の PIN を入力するように求めるプロンプトが表示されます。

    #  pktool gencert keystore=pkcs11 label=authority subject="CN=authority" serial=0x01
         Enter PIN for Sun Software PKCS#11 softtoken: 
    

      各情報の意味は次のとおりです。

    • keystore はキーストアのタイプを指定し、ここでは pkcs11 です

    • label は、鍵のペアとトラストアンカー証明書のラベルを指定します

    • subject は、トラストアンカー証明書の識別名を指定します

    • serial は、トラストアンカー証明書の一意のシリアル番号を指定します

  3. サーバー上で、pktool export コマンドを使用して、ソフトトークンキーストアからトラストアンカー証明書をエクスポートします。

    export サブコマンドを実行すると、ソフトトークンキーストア用の PIN を入力するように求めるプロンプトが表示されます。

    #  pktool export keystore=pkcs11 outfile=ta.cert \
      objtype=cert label=authority outformat=pem
         Enter PIN for Sun Software PKCS#11 softtoken:
    

      各情報の意味は次のとおりです。

    • outfile は、トラストアンカー証明書の出力ファイル名を指定し、ここでは ta.cert です

    • objtype は、トラストアンカー証明書のクラスを指定します

    • label は、トラストアンカー証明書のラベルを指定します

    • outformat は、トラストアンカー証明書の出力形式を指定します

  4. サーバー上の root として、/etc/ssh/cert ディレクトリを作成します。

    次に、その中に Exampleta.cert 証明書ファイルを配置します。このトラストアンカー証明書は、クライアント側からユーザー証明書を検証するために使用されます。

    #  mv Exampleta.cert /etc/ssh/cert
  5. サーバー上で、pktool gencsr コマンドを使用して CSR を生成します。

    gencsr サブコマンドを実行すると、ソフトトークンキーストア用の PIN を入力するように求めるプロンプトが表示されます。

    #  pktool gencsr keystore=pkcs11 label=host outcsr=host.csr subject="CN=<HOSTNAME>"
         Enter PIN for Sun Software PKCS#11 softtoken:

      各情報の意味は次のとおりです。

    • label は、ソフトトークンキーストア内で作成される非公開鍵のラベルを指定します

    • outcsr は、出力 CSR ファイルの名前を指定します

    • subject は、証明書要求の識別名を指定します

  6. サーバー上で pktool signcsr コマンドを使用して、ホスト証明書を作成するためにトラストアンカー非公開鍵を使用して CSR に署名します。

    signcsr サブコマンドを実行すると、ソフトトークンキーストア用の PIN を入力するように求めるプロンプトが表示されます。

    #  pktool signcsr keystore=pkcs11 signkey=authority csr=host.csr \
      outcert=host.cert serial=0x03 issuer="CN=authority"
         Enter PIN for Sun Software PKCS#11 softtoken:

      各情報の意味は次のとおりです。

    • signkey は、トラストアンカー非公開鍵のラベルを指定します

    • csr は、署名される入力 CSR を指定します

    • outcert は、ホスト証明書の出力ファイル名を指定し、ここでは host.cert です

    • serial は、ホスト証明書の一意のシリアル番号を指定します

    • issuer は、トラストアンカーの識別名が付いた発行者名をホスト証明書に指定します

  7. サーバー上で pktool import コマンドを使用して、ホスト証明書をソフトトークンキーストアにインポートします。
    #  pktool import keystore=pkcs11 infile=host.cert label=host

      各情報の意味は次のとおりです。

    • infile は、インポートされるホスト証明書のファイル名を指定します

    • label は、ホスト証明書のラベルを指定します

  8. root 役割のクライアント上で、鍵管理フレームワーク (KMF) ポリシーデータベースファイルを作成します。
    #  kmfcfg create dbfile=/etc/ssh/policy.xml policy=ssh ta-name=search mapper-name=cn

      各情報の意味は次のとおりです。

    • dbfile は、ポリシーデータベースファイルの名前を指定します

    • policy は、ポリシーデータベースファイルに作成されるポリシーレコードの名前を指定します

    • ta-name は、ここでは search 値を指定し、これは KMF ポリシーが、証明書の発行者名と一致する証明書を検証用に使用することを示します

    • mapper は、その共通名 (cn) 属性を使用して、証明書を名前にマッピングすることを指定します

  9. サーバー上で、root として、ソフトトークンキーストアのパスフレーズを含む PIN ファイルを作成します。
    #  printf "keystore-passphrase" > /etc/ssh/pinfile
  10. サーバー上で root 役割として HostKey エントリを sshd_config ファイルに追加します。
    #  pfedit /etc/ssh/sshd_config
         ...
         HostKey       pkcs11:object=host;token=Sun Metaslot;pinfile=/etc/ssh/pinfile

      ここで、PKCS #11 URI スキームの属性は次のとおりです。

    • object は、ソフトトークンキーストア内の証明書オブジェクトのラベルを指定します

    • token は、そのトークンラベルによって PKCS #11 トークンを指定します

    • pinfile は、ソフトトークンキーストアのパスフレーズを指定します

    HostKey キーワードは、PKCS #11 URI スキームのホスト証明書を指定します。sshd(1M) のマニュアルページを参照してください。

  11. サーバー上で、ssh サービスインスタンスを無効にして有効にします。

    SSH デーモンはホスト証明書をホスト鍵として使用します。

    #  svcadm disable svc:/network/ssh
    #  svcadm enable svc:/network/ssh
  12. クライアントから、ユーザーは TrustedAnchorKeystoreKMFPolicyDatabase、および KMFPolicyName オプションを使用してサーバーにログインします。

    これらのキーワードは、ホスト証明書を検証するために使用するトラストアンカー証明書を指定します。

    #  ssh -o TrustedAnchorKeystore=/etc/ssh/cert -o KMFPolicyDatabase=/etc/ssh/policy.xml 
        -o KMFPolicyName=ssh <USERNAME>@<HOSTNAME>

      各情報の意味は次のとおりです。

    • TrustedAnchorKeystore は、トラストアンカーの証明書を含むディレクトリを指定します

    • KMFPolicyDatabase は、ポリシーデータベースファイルのファイル名を指定します

    • KMFPolicyName は、使用するポリシーの名前を指定します