メニュー

プロダクト



プログラミング


  • Java
    • Web 技術
    • メール技術
      • JavaMail
      • Apache James Mailet
    • Web フレームワーク
      • Jakarta Struts
      • Jakarta Velocity
      • Jakarta Tapestry
      • WebWork2
      • Jakarta Jetspeed
      • Apache Cocoon 2
    • DB 技術
      • JDBC
      • Hibernate
      • Apache Torque
    • DI (IoC) コンテナ
      • Spring Framework
      • Seasar2
      • Apache HiveMind
      • PicoContainer
    • 属性プログラミング
    • テスティング
      • JUnit
      • Jakarta Cactus
      • DBUnit
      • djUnit
      • FitNesse
    • ロギング
      • Apache Log4j
      • Jakarta Commons logging
    • 分散コンポーネント技術
      • EJB
    • リッチ クライアント
      • Java Web Start
    • GUI
    • XML Web サービス
      • Apache Axis
      • Apache SOAP
    • アプリケーション管理
    • トランザクション
    • 開発環境
      • Apache Ant
      • Apache Maven
      • Apache Maven2
    • Eclipse
    • Tips
  • .NET Framework
  • PHP
  • XML
    • SmartDoc
  • 正規表現
  • VB, VBA, VBScript, ASP
  • C/C++

DBMS


  • MySQL
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server
  • HSQLDB
  • SQLite
  • Apache Xindice

アプリケーション サーバ



OS



バージョン管理システム



未整理


最近更新したページ
このウィキの読者になる
更新情報がメールで届きます。
このウィキの読者になる

セキュリティ - 電子証明書の作成 (OpenSSL)

セキュリティ - 電子証明書の作成 (OpenSSL)

概要


OpenSSL の Windows 版を使用して、認証局、鍵、電子証明書を作成する方法を示します。

前処理


  1. OpenSSL をインストールします。
    1. OpenSSL は、ソースコードをダウンロードしてビルドすることが基本ですが、各所でビルド済みの Windows 版バイナリが公開されています。感謝しつつダウンロードして使用しましょう。例えばここです。
    2. PATH を通しておくと便利です。
    3. 環境変数 OPENSSL_CONF に ${OPENSSL_HOME}\bin\openssl.cnf を設定します。
  2. Perl をインストールします。
    1. メモ/Perl/導入 - Windows へインストール? を参照してインストールします。

認証局 (CA) の作成


openssl.cnf を編集


${OPENSSL_HOME}\bin\openssl.cnf を以下のように編集します。

  • 'unique_subject' を yes に設定し、コメントアウトを外します。
#unique_subject	= no			# Set to 'no' to allow creation of
					# several ctificates with same subject.
unique_subject	= yes

  • 'crlnumber' のコメントアウトを外します。
#crlnumber	= $dir/crlnumber	# the current crl number must be
					# commented out to leave a V1 CRL
crlnumber	= $dir/crlnumber

  • 'nsCertType = server' となっているコメントを外します。 'nsCertType' はいくつか記述されていますので注意。
# This is OK for an SSL server.
# nsCertType			= server
nsCertType			= server

  • 'nsCertType = sslCA, emailCA' となっているコメントを外します。 'nsCertType' はいくつか記述されていますので注意。
# Some might want this also
# nsCertType = sslCA, emailCA
nsCertType = sslCA, emailCA

作業用ディレクトリ作成


作業用のディレクトリを作成します。以降、 ${SSL_WORK} と表記します。

CA 用秘密鍵と証明書の作成


以下のスクリプトを実行します。

CA.pl -newca

対話的なスクリプトなので、いくつかの質問に答えます。

CA certificate filename (or enter to create)

ENTER を入力します。

Making CA certificate ...
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
............++++++
...................++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:

CA 用のパスワードを入力します。

Verifying - Enter PEM pass phrase:

もう一度、同じパスワードを入力します。

-----
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) [AU]:

国コードを入力します。日本の場合 'JP' です。

State or Province Name (full name) [Some-State]:

都道府県を入力します。 (例: 'Kanagawa')

Locality Name (eg, city) []:

市町村を入力します。 (例: 'Zama')

Organization Name (eg, company) [Internet Widgits Pty Ltd]:

組織名を入力します。 (例: 'Uguu Oreore CA')

Organizational Unit Name (eg, section) []:

組織内の部署名を入力します。 (例: 'uguu')

Common Name (eg, YOUR name) []:

組織の FQDN を入力します。 (例: 'www.uguu.mydns.jp')

Email Address []:

メールアドレスを入力します。 (例: 'uguuxp@hotmail.com')

以上で、 CA 用の秘密鍵、及び証明書が作成されます。以下のようなディレクトリ構成になるので、一応、確認します。

${SSL_WORK}
|   .rnd
|
\---demoCA
    |   cacert.pem
    |   index.txt
    |   serial
    |
    +---certs
    +---crl
    +---newcerts
    \---private
            cakey.pem

ルート証明書の作成


次のコマンドを実行し、ルート証明書を作成します。

openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca.der

demoCA ディレクトリに ca.der ファイルが作成されます。

鍵、及びサーバ証明書の作成


秘密鍵の作成


次のコマンドを実行します。

openssl genrsa -out server.key 1024

Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
.++++++
....++++++
e is 65537 (0x10001)

server.key ファイルが作成されます。

公開鍵の作成


次のコマンドを実行します。

openssl req -new -key server.key -out server.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) [AU]:

国コードを入力します。日本の場合は 'JP' です。

State or Province Name (full name) [Some-State]:

都道府県を入力します。 (例: 'Kanagawa')

Locality Name (eg, city) []:

市町村を入力します。 (例: 'Zama')

Organization Name (eg, company) [Internet Widgits Pty Ltd]:

組織名を入力します。 (例: 'Uguu Software')

この組織名はサーバを運営している組織の名前であり、認証局とは別です。なので、認証局の証明書を作成したときに入力した組織名とは別の名前を入力します。同じ名前を入力した場合、うまく動作しないようです。

Organizational Unit Name (eg, section) []:

組織内の部署名を入力します。 (例: 'uguu')

Common Name (eg, YOUR name) []:www.uguu.mydns.jp

組織の FQSN を入力します。 (例: www.uguu.mydns.jp)

Email Address []:uguuxp@hotmail.com

メールアドレスを入力します。

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:

ENTER を入力します。

An optional company name []:

ENTER を入力します。

以上で、 server.csr が作成されます。

サーバ用証明書の作成


まず、シリアルナンバーファイルを作成します。

echo 01 > ./demoCA/ca-cert.srl

次に証明書を作成します。

openssl x509 -CA ./demoCA/cacert.pem -CAkey ./demoCA/private/cakey.pem -CAserial ./demoCA/ca-cert.srl -req -days 365 -in server.csr -out server.crt

Loading 'screen' into random state - done
Signature ok
subject=/C=JP/ST=Kanagawa/L=Zama/O=Uguu Software/OU=Administrator/CN=www.uguu.mydns.jp/emailAddress=uguuxp@hotmail.com
Getting CA Private Key
Enter pass phrase for ./demoCA/private/cakey.pem:

CA 用のパスワードを入力します。

以上で、 server.crt ファイルが作成されます。

[TODO] クライアント証明書の作成 (未調査)


参照


2005年11月04日(金) 18:31:42 Modified by uguuxp




スマートフォン版で見る