OpenSSLでの自己認証局(CA)や証明書などの作成方法

SSL通信に必要な証明書の作成方法を、OpenSSLを利用して手順をご紹介します。

なお、ここでは、自己認証局(CA)の構築と、サーバ用の証明書作成を行います。

CentOSでは、OpenSSLの必要なファイル群は、/etc/pki/以下に配置されています。

 

 

証明書作成の流れ

証明書の作成は大まかに以下の3つの手順が必要です。(自己認証局を作る場合)

1.証明書作成用設定ファイルの編集

2.自己認証局(CA)の構築(CAの秘密鍵と証明書の作成)

3.署名要求証明書の作成(申請者の秘密鍵と証明書の作成)

4.自己認証局による署名要求証明書への署名(申請者用の、CAの署名付証明書の作成)

 

 

サーバ証明書作成の準備

ここでは、サーバ証明書を作成しますので、/etc/pki/tls/openssl.cnfを編集します。

# This is OK for an SSL server.
nsCertType	= server <---コメントを解除

# Some might want this also
nsCertType = sslCA, emailCA <---コメントを解除

# This is OK for an SSL server.
nsCertType	= server <---コメントを解除

 


自己認証局(CA)の構築

最初に、自己認証局(以下CA)の構築を行います、CAの構築は/etc/pki/CAに行います。

CAを作成するには、OpenSSL付属の/etc/pki/tls/misc/CAスクリプトを利用します。

なお、構築するCAの設定は/etc/pki/tls/misc/CAファイルに定義してありますので、変更する場合は、これを編集してください。

準備ができたら、CAの構築を行います。

 

CAの構築で作成されるのは、認証機関の証明書と認証機関の秘密鍵です。

cd /etc/pki/tls/misc
./CA -newca

 

以下の入力情報に適時答えてください。

CA cretificate filename (or enter tocreate)  <---上位CAがあれば指定
Enter PEM pass phrase:  <---証明書のパスフレーズを入力
Verifying - Enter PEM pass phrase:  <---証明書のパスフレーズの確認
Country Name (2 letter code) [AU]:JP <---国名、日本なら'JP'
State or Province Name (full name) [Some-State]:AICHI <---都道府県名を指定
Location Name(eg,city) []:NAGOYA <---組織の本拠地の市区町村名を指定
Orgnaization Name(eg,company)[Internet Widgits Pty Ltd]:UNIXLife <---組織名(法人名)を指定
Orgnaization Unit Name(eg,section)[]: <---部署名を指定
Common Name (eg,YOUR name)[]:sv.unixlife.jp <---サーバのホスト名(FQDN)を指定
Email Address []:master@unixlife.jp <---連絡先E-Mailアドレスを指定

これで/etc/pki/CA/以下に必要なファイルが作成されCAの作成は終了です。

/etc/pki/CA/cacert.pem =認証機関の証明書

/etc/pki/CA/private/cakey.pem =認証機関の秘密鍵

 

作成した証明書は以下のコマンドで内容の確認ができます。

openssl x509 -in cacert.pem -text

 

今作ったのが、PEMフォーマットで、バイナリDERフォーマットにするには以下のようにします。

openssl x509 -in cacert.pem -outform DER -out cacert.der

 


サーバの秘密鍵と署名要求証明書の作成

ここでは、CAに署名してもらう側の、サーバの秘密鍵とCAに署名してもらう為の署名要求証明書を作成します。

 

秘密鍵の作成

作業は、/etc/pki/server/以下で行います。

mkdir /etc/pki/server/

 

まず、サーバの秘密鍵を作成します。パスフレーズを聞かれますので、適時設定してください。

openssl genrsa -des3 -out server.key 2048

ここで作成した、server.keyがサーバの秘密鍵になります。

 

Tips

パスフレーズの付いた秘密鍵を利用してデーモンを立ち上げる場合、パスフレーズを入力するよう求められる事があります。

これは、デーモンの自動起動設定をしてある時には厄介な問題になります。

もし、その問題の回避を優先したいなら、秘密鍵のパスフレーズを解除することで問題を解決出来ます。

秘密鍵のパスフレーズを解除するには、以下のコマンドを発行します。

openssl rsa -in server.key -out servernopass.key

 

 

署名要求証明書の作成

次に、認証機関(CA)への署名要求証明書(csr)を作成します。

openssl req -new -days 365 -key server.key -out csr.pem

 

証明書作成に必要な情報を適時入力してください。

Country Name (2 letter code) [AU]:  <---国名、通常は'JP'
State or Province Name (full name) [Some-State]:  <---都道府県名を指定
Location Name(eg,city) []:  <---組織の本拠地の市区町村名を指定
Orgnaization Name(eg,company)[Internet Widgits Pty Ltd]:  <---組織名(法人名)を指定
Orgnaization Unit Name(eg,section)[]:  <---部署名を指定
Common Name (eg,YOUR name)[]:  <---FQDNを指定
Email Address []:  <---連絡先E-Mailアドレスを指定

ここで作成した署名要求証明書csr.pemをCAに送り署名してもらいます。

 

 

CAでの署名要求証明書への署名

サーバの署名要求証明書にCAが署名したサーバ証明書を作成します。

作業は、/etc/pki/tls/misc/以下で行います。

以下のコマンドで、サーバの署名要求証明書にCAが署名します。

 openssl ca -config /etc/pki/tls/openssl.cnf -in /etc/pki/server/csr.pem \ -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem \ -out /etc/pki/server/cert.pem 

-in <—サーバの署名要求証明書ファイル

-keyfile <—認証機関(CA)の秘密鍵ファイル

-cert <—認証機関(CA)の証明書ファイル

-out <—作成する署名済み証明書ファイル

これでCAに署名されたサーバ証明書のcert.pemが作成されます。

サーバの秘密鍵とサーバの署名済み証明書を使って、ApacheなどのSSL通信の設定に利用出来ます。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">