wiki:TipAndDoc/ssl

Version 9 (modified by mitty, 14 years ago) (diff)

--

mod_ssl

SSL 証明書の作り方

with ubuntu hardy

  • install openssl
  • /etc/ssl/openssl.cnf /usr/lib/ssl/misc/CA.sh を適宜変更
    • 対象は 0.9.8g-4ubuntu3.7 -> [2]
    • [3]
  • CA.sh を使った場合、カレントディレクトリに「demoCA」というディレクトリが作られる
    • 違うディレクトリ・ファイル名にする場合は、45行目前後を変更する (今回はデフォルトのまま)
      CATOP=./demoCA
      CAKEY=./cakey.pem
      CAREQ=./careq.pem
      CACERT=./cacert.pem
      

rootCA

  • この作業はルート認証局を作る時に一回だけ行う
  • rootCA: $ sudo /usr/lib/ssl/misc/CA.sh -newca
    Country Name (2 letter code) [AU]:JP
    State or Province Name (full name) [Some-State]:Ibaraki
    Locality Name (eg, city) []:Tsukuba
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Private CA for mitty.jp
    Organizational Unit Name (eg, section) []:
    Common Name (eg, YOUR name) []:Private CA for mitty.jp
    Email Address []:
    
    • ここで、「Organization Name」は後で作るサーバ証明書とは違う物にしておく
    • 「Common Name」はサーバ証明書ではサーバのFQDNだが、ルートCA証明書の場合はドメインでなくて良い
  • rootCA: $ sudo openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/cacert.der
    • ブラウザインポート用のルートCA証明書(任意)

新しい証明書

  • newserver <= 新しいSSL証明書を作成したいサーバ
  • rootCA <= ルートCA証明書を保持しているルート認証局サーバ
  • newserver: $ sudo /usr/lib/ssl/misc/CA.sh -newreq
    Enter PEM pass phrase:              <= type password (1)
    Verifying - Enter PEM pass phrase:  <= retype it
    -----
    
    Country Name (2 letter code) [AU]:JP
    State or Province Name (full name) [Some-State]:Ibaraki
    Locality Name (eg, city) []:Tsukuba
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:mitty.jp
    Organizational Unit Name (eg, section) []:laboratory
    Common Name (eg, YOUR name) []:lab.mitty.jp           <= (2)
    Email Address []:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:      <= type nothing
    An optional company name []:  
    Request is in newreq.pem, private key is in newkey.pem
    
    • (1) ここでtypeするパスワードは実際には使用されない
    • (2) Common Nameに実際に使用するFQDNを入れるが、「*.mitty.jp」の様に指定するといわゆる「ワイルドカード証明書」になる。
    • ルートCAへ送付する、サーバ証明書リクエストファイルとサーバ秘密鍵を作成
  • newserver: $ sudo openssl rsa -in ./newkey.pem -out ./newkey.pem
    Enter pass phrase for ./newkey.pem:  <= type password (1)
    
    • (1) -newreq の時と同じパスワードをtype
    • サーバ秘密鍵からパスフレーズの削除 (Apacheが起動する際にパスフレーズを聞かれなくてすむようにする)

新しい証明書への署名

  • newserverからrootCAへnewreq.pemをコピーする。この時、コピー先はrootCA上でdemoCAがあるディレクトリにすること。
  • rootCA: $ sudo /usr/lib/ssl/misc/CA.sh -sign
    Enter pass phrase for ./demoCA/private/cakey.pem:  <= type rootCA's password (1)
    
    Signed certificate is in newcert.pem
    
    • (1) ルートCAを作った際の秘密鍵のパスフレーズをtype
    • サーバ証明書がnewcert.pemとして作成される
  • rootCA: $ sudo openssl x509 -in newcert.pem -out newcert.crt
    • サーバ証明書から必要な部分だけを切り出す

作成物

  • ./newkey.pem サーバ秘密鍵
  • ./newcert.crt サーバ証明書
  • ./demoCA/cacert.der (作った場合)サーバ証明書に対するルートCA証明書

参考