*

PHPki で簡単証明書運用 (3) 【署名されたサーバ証明書を作る】

公開日: : 最終更新日:2014/02/06 FreeBSD, PHP, PHPki

Seichan です.こんばんわ.
さて,先日の「PHPki で簡単証明書運用 (2) 【初期設定と Root CA 証明書作成】」の続きです.
今回はタイトルのとおり,サーバ証明書を作ります.

 SPONSORED LINK
 

管理画面へアクセス

Apacheの Alias で設定した URL に /ca をつけてブラウザでアクセスしてください.多分こんな形で Forbidden になると思います.
phpki007

どのような形でも良いので HTTPS アクセスが可能な Web Server 環境であれば https://[サーバ名 or アドレス]/phpki/ca の形で SSL アクセスすると次のような認証画面が表示されます.
phpki008

ここのユーザ,パスワードは「secure.sh」実行時に指定したユーザ名とパスワードを入力してください.認証が成功するとこのようなトップ画面が表示されます.
phpki009

Web サーバの SSL 設定は,PHPki で証明書を作ってからやるんだ!! という方は .htaccess ファイルを修正して一時的に SSL(HTTPS) ではなく,通常の HTTP アクセスを可能なように設定しましょう.

PHPki のソースを展開したディレクトリ以下に ca というディレクトリがあります.この ca ディレクトリ以下に .htaccess ファイルがありますので,このファイルを修正します.修正は簡単で,一番下の行の SSLRequreSSL をコメントアウトします.

AuthName "Restricted Area"
AuthType Basic
AuthUserFile "/usr/local/www/phpkipasswd-master"
require valid-user
SSLRequireSSL

AuthName "Restricted Area"
AuthType Basic
AuthUserFile "/usr/local/www/phpkipasswd-master"
require valid-user
#SSLRequireSSL

に変更します.

修正後あらためてブラウザでアクセスしてください.HTTP でも認証画面が表示され,認証が成功すると上述の管理画面トップが表示されます.

署名されたサーバ証明書を作成する

さて,いよいよ本題です.
管理画面トップの「Create a New Certificate」をクリックしてください.クリックすると「Certificate Request Form」画面に移動します.
phpki010

ここから必要項目を入力していくのですが,アスタリスク(*) が付いている項目は必須項目です.全部についています…
じゃぁ,全て必須項目って注釈で良いじゃないか!! と思いつつ,各項目を入力して行きましょう.

  • Common Name

証明書を発行するサーバのホスト名を FQDN で入力します.たとえば,www.seichan.org 等です.

Tip として,ワイルドカード証明書を作る場合は *.seichan.org など,ホスト名部分をアスタリスク(*) にすることで作成出来ます.
利用頻度は低いと思いますが,IPアドレスを入力して設定することも可能です.アドレスが変わるということは良くある話ですので…

  • E-mail Address

証明書を発行するサーバの管理者のメールアドレスを入力します.証明書内に埋め込まれますので外部に公開する場合などでは,恥ずかしいアドレスは避けましょう.

  • Organization (Company/Agency)

組織名,通常は会社名の英文字正式名称を入力します.

  • Department/Unit

所属名や部署名を英文字で入力します.OpenSSLで証明書を作成する際の Organizational Unit Name になります.

  • Locality (City/County)

市町村名を英文字で入力します.

  • State/Province

都道府県名を英文字で入力します.

  • Country

2文字の国コードを入力します.日本の場合は「JP」です.

  • Certificate Password

この証明書のパスワードを設定します.Root CA パスワードや,管理画面アクセス用のパスワードでは無いので注意してください.

  • Certificate Life

証明書の有効期限を選択します.Root CA 証明書でも書きましたが,あまり長いのも本来は良くないことですので適切な有効年数を指定してください.

  • Key Size

鍵長を選択します.大きいサイズの方が暗号強度が高いという事になります.Root CA と同等か一段低い程度で十分かと思います.

  • Certificate Use

一番重要な箇所です.証明書を作成するにあたっての利用用途を選択します.Web サーバなどの SSL 証明書であればSSL Serverを選択してください.下に選択項目と利用用途を表としてまとめましたので,よろしければ合わせてご参照ください.

「SSL Server」を選択した場合,追加で2つの入力フォームが出現します.

  • Alternative DNS Names

「Common Name」で入力したFQDN以外でも同じ証明書を利用したい場合はここに1行 1FQDN で入力します.上でワイルドカード署名書についてふれましたが,ワイルドカードだと範囲が広すぎる場合が多い為,ここのフィールドで必要分のみ設定した方がセキュアです.

  • IP’s

「Common Name」で入力したIPアドレス以外でも同じ証明書を利用したい場合はここに1行 1IPで入力します.

入力が完了したら「Submitt Request」ボタンをクリックしてください.

続いて入力内容の確認画面へ移りますので,入力内容の確認後問題があれば「Go Back」ボタンを,問題が無い場合は「Yes! Create and Download」ボタンをクリックします.
phpki011

Yes! Create and Download」ボタンをクリックした後は内部的に証明書が作成,署名されます.その後,ブラウザのダウンロード画面が表示されますのでダウンロードしてください.
phpki012

証明書のパスワード除去

先ほどダウンロードした証明書は当然そのまま利用可能です.ですが,パスワードが埋め込まれている為,証明書を利用する (Apache などの) サービスやデーモンを起動させる際,毎回パスワード入力が必要となります.
パスワード入力を行う方が安全なことは間違いないのですが,それは知っているけど楽したい!! という方はパスワードを除去しちゃいましょう.

パスワードの除去は PHPki では出来ないため,openssl コマンドで実施します.次のようなコマンドでパスワードを除去できます.

openssl rsa -in www.seichan.org.pem -out www.seichan.org_nopwd.pem
Enter pass phrase for www.seichan.org.pem: [パスワード]

この場合パスワード有りの証明書ファイル「www.seichan.org.pem」からパスワードを除去し,「www.seichan.org_nopwd.pem」として証明書を作成しています.パスワード無しの証明書を使用するよう,ソフトウェアの設定を変更してください.

証明書とRSA秘密鍵の分離

先ほどダウンロードした証明書はRSA秘密鍵とサーバ証明書がひとつのファイルに収められています.このまま利用することが可能なソフトウェアではそのまま利用しても問題はありません.ただ,分離して管理したい場合や,ひとつのファイルに纏められていると利用できないソフトウェアの場合は分離する必要があります.
これは通常のエディタで対応することが可能です.
—–BEGIN RSA PRIVATE KEY—–」から始まりその直後の「—–END CERTIFICATE—–」までが RSA秘密鍵となり,—–BEGIN CERTIFICATE—–」から「—–END CERTIFICATE—–」までがサーバ証明書になります.

これらの区切り文字を含んだ形でそれぞれのファイルとして保存することで分離出来ます.長くなるので間を端折りますが,次のような形のファイルを作成するということです.

  • RSA秘密鍵
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,D8B9BA859B623F2E
qBlaPoF5ludJ1Fta8fhgH1BZOVMV1VDN+m+EXM2R5mepam6WSuFfJXZBaJLaokPK
kwLCkpVdpzAXBxkOZJ8IevENqa0+hSR0N0jNsP3uK6cKtkkMgvkeGYRTpN36YNPc
....
XRptZ7V5dYEw2IUD7v/4qnM1mLxRLH6HLgI4iiY73XVXgfIsgfeNkh3C+g5v/Je4
-----END RSA PRIVATE KEY-----
  • サーバ証明書
-----BEGIN CERTIFICATE-----
MIIG9jCCBd6gAwIBAgIDEAABMA0GCSqGSIb3DQEBDQUAMIG0MQswCQYDVQQGEwJK
UDEOMAwGA1UECBMFVG9reW8xEjAQBgNVBAcTCVNoaW5hZ2F3YTEcMBoGA1UEChMT
U2VpY2hhbiBIb21lIFNlcnZlcjEeMBwGA1UECxMVQ2VydGlmaWNhdGUgQXV0aG9y
...
Y0sfGwIhmoxAbNNKLN0uuRI/Us0T4Yils4yE
-----END CERTIFICATE-----

証明書種別のまとめ

付録として,各証明書種別の詳細な説明が記載されているサイトの URL をリンクしました.

証明書種別 利用用途 詳細説明サイト
E-mail, SSL Client クライアント証明書 クライアント証明書とは (GlobalSign)
E-mail, SSL Client, Code Signing コードサイニング証明書 コードサイニング (ASCIIデジタル用語辞典)
SSL Server サーバ証明書 SSLサーバ証明書とは (GlobalSign)
VPN Client Only VPNクライアント用証明書 OpenVPNで使用できる認証方法 (OpenVPN.JP)
VPN Server Only VPNサーバ用証明書 OpenVPNで使用できる認証方法 (OpenVPN.JP)
VPN Client, VPN Server VPNクライアント・サーバ証明書(兼用) OpenVPNで使用できる認証方法 (OpenVPN.JP)
Time Stamping タイムスタンプ局証明書 電子文書の「タイムスタンプ」を解説する (IT Pro)

なぜ「VPN Client Only」と「VPN Server Only」および「VPN Client, VPN Server」の説明サイトが同じ場所を指しているか.ですが,単純に PHPki のコード上,これら3つの処理の違いが無いからです…
単純にわかりやすいように名前を分けたのか,何か意図があって分けているのかが不明です…

以上,サーバ証明書を作る.でした.次回はそれら証明書の管理についてふれたいと思います.

SPONSORED LINK
  ☆ ブログランキング参加しました (*≧∀≦)ノシ
にほんブログ村 IT技術ブログ FreeBSDへ 

関連記事

FreeBSD

総帯域 44Gbit?

まいど.Seichan です.1000Base-T って Full-Duplex だから,2Gb/s

記事を読む

no image

サーバを一時的に入れ替える為に

こんばんわ.Seichan です.本日は代休を使って会社を休んでいます. 掃除,洗濯をやって,ついで

記事を読む

no image

PostgreSQL サーバをかえた

PostgreSQL を 8.0 系から,8.1 系に変更. そのついでに,物理的なサーバをかえた.

記事を読む

FreeBSD

FreeBSD は / から ZFS 化出来るらしいよ

Seichan です.とりあえずよさげなサイトを見つけたので,めもめも.http://www.ish

記事を読む

no image

atacontrol

ただいまなのです.Seichan です.じめじめしてて最悪… FreeBSD の ATA デバイスを

記事を読む

no image

qmail で SMTP-AUTH 環境を作ってみたけど…

咳が止まらず死ぬほどしんどいので会社休んで医者通いしてきた Seichan です.こんばんわ… 無く

記事を読む

no image

FreeNAS と m0n0wall

そういや,FreeSBIE で色々遊んでるわけなのだが, FreeNAS が気になる. 今の Fil

記事を読む

FreeBSD

FreeBSD 6.3-RELEASE でちょっと遊んだ

Seichan です.インフルエンザで丸々一週間会社を休んでしまいました...有給休暇の残がゼロに!

記事を読む

no image

Multiple vulnerabilities in OpenSSH

今度は OpenSSH に関する SA が出てますなぁ… make world 終わったばっかりなの

記事を読む

FreeBSD

GEOM CONCAT を使う

Seichan です.こんばんわ. 前回の「GEOM RAID1 を管理する」で書いた通り今回

記事を読む

Message

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Google Adsense

ssl_icon
PHPki で簡単証明書運用 (5) 【管理ユーザのメンテナンスとCRLの取得】

Seichanです.こんばんわ. いつものとおり,だいぶ日が経ってし

ssl_icon
PHPki で簡単証明書運用 (4) 【作成した証明書を管理する】

Seichanです.こんばんわ. 先日の「PHPki で簡単証明書運

ssl_icon
PHPki で簡単証明書運用 (3) 【署名されたサーバ証明書を作る】

Seichan です.こんばんわ. さて,先日の「PHPki で簡単

ssl_icon
PHPki で簡単証明書運用 (2) 【初期設定と Root CA 証明書作成】

Seichan です.こんばんわ. さて,先日の「PHPki で簡単

ssl_icon
PHPki で簡単証明書運用 (1) 【PHPki の修正と導入 (修正版)】

Seichan です.こんばんわ. 先日「PHPki で簡単証明書運

→もっと見る

PAGE TOP ↑