2017-02-06  Web Windows

OpenSSLを使って自己署名証明書を作成する

Windows 用の OpenSSL を使って自己署名のサーバー証明書を作成していきます。

Windows用バイナリーをダウンロードする

以下のサイトから ZIP ファイルをダウンロードします。

32 ビット版の場合 ファイル名は openssl-*-i386-win32.zip のようになっています。2017 2 6 日時点の最新バージョンは openssl-1.0.2k-i386-win32.zip でした。今回はこのバージョン 1.0.2k で説明を進めていきます。

適当な場所に openssl\bin というフォルダーを作成して そこにダウンロードした ZIP ファイルの中身を展開します。今回は E:\openssl\bin に展開しました。フォルダーの階層や名前は自由に決めてもらって構いませんが 最後のフォルダー名は必ず bin としてください。

既定の設定ファイルを作成する

ファイルを展開した場所 E:\openssl openssl.cnf という名前のテキストファイルを作成して 内容を以下の通りにします。このファイルは以下のリンクからダウンロードすることもできます。

openssl.cnf
###################################################################### [ req ] default_bits = 2048 default_keyfile = privkey.pem distinguished_name = req_distinguished_name ###################################################################### [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = JP countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Not Applicable localityName = Locality Name (eg, city) localityName_default = Not Applicable 0.organizationName = Organization Name (eg, company) 0.organizationName_default = MY COMPANY organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = commonName = Common Name (eg, your website’s domain name) commonName_max = 64 ###################################################################### [ server ] nsCertType=server extendedKeyUsage = serverAuth

25 行目の MY COMPANY は自分の組織名に書き換えてください。

起動用バッチファイルを作成する

ファイルを展開した場所 E:\openssl OpenSSL_Console.bat という名前のバッチファイルを作成して 内容を以下の通りにします。このファイルは以下のリンクからダウンロードすることもできます。

OpenSSL_Console.bat
@ECHO OFF SET PATH=%~dp0bin;%PATH% SET OPENSSL_CONF=%~dp0openssl.cnf @openssl version %COMSPEC% /K "cd /d %~dp0"

作業用コンソールを起動する

ここまでの作業でフォルダーは以下のような構成になっています。

OpenSSL_Console.bat をダブルクリックして起動します。OpenSSL のバージョンが表示されれば成功です。

秘密鍵を作成する

以下のコマンドを入力して秘密鍵を作成します。ここでは秘密鍵のファイル名を server.key としています。

openssl genrsa -out server.key

これで秘密鍵 server.key ができました。

Apache での扱いやすさを考えて秘密鍵のファイル名を server.key としました。

証明書署名要求(CSR)を作成する

以下のコマンドを入力して証明書署名要求 CSR を作成します。

openssl req -new -sha256 -key server.key -out server.csr

コンソールでの対話形式で作業を進めていきます。既定値として openssl.cnf に記載した内容が表示されるので ほとんどの項目では Enter を押して進めていくことができます。

  • Country Name 国名
  • State or Province Name 都道府県名
  • Locality Name (eg, city) 市区町村名
  • Organization Name (eg, company) 会社名
  • Organization Unit Name (eg, section) 部署名
  • Common Name (eg, your website’ s domain name)

最後の Common Name については既定値が表示されません。ここにはウェブサーバーのホスト名を入力します。

これで証明書署名要求 server.csr ができました。

自分で署名してサーバー証明書を作成する

以下のコマンドを入力してサーバー証明書を作成します。引数 -days で有効期間 7300 20 を指定しています。

openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 7300 -extensions server

これで サーバー証明書 server.crt が出来上がりました。

Apache 2.4にサーバー証明書を配置する

最後に作成した自己署名サーバー証明書を Apache に配置してみます。

Apache Hausのバイナリーを使用している場合

Apache Haus で配布されている Apache を使用している場合は Apache conf\ssl フォルダーを開いて ここに作成した server.crt server.key を上書きコピーします。これで Apache を再起動すれば サーバー証明書が有効になります。

その他のApacheバイナリーを使用している場合

Apache conf フォルダーに server.crt server.key をコピーします。

conf\httpd.conf をテキスト エディターで開いて以下の内容を編集します。

  • LoadModule ssl_module modules/mod_ssl.so がコメントアウトされている場合はコメントを外して有効化します。
  • Include conf/extra/httpd-ssl.conf がコメントアウトされている場合はコメントを外して有効化します。この行自体が存在しない場合は追記してください

conf\extra\httpd-ssl.conf をテキスト エディターで開いて以下の内容を編集します。

  • SSLCertificateFile "${SRVROOT}/conf/server.crt" がコメントアウトされている場合はコメントを外して有効化します。ファイル名が異なっている場合は実際に配置したサーバー証明書のファイル名に合わせてください。
  • SSLCertificateKeyFile "${SRVROOT}/conf/server.key" がコメントアウトされている場合はコメントを外して有効化します。ファイル名が異なっている場合は実際に配置したサーバー証明書のファイル名に合わせてください。

これで Apache を再起動すれば サーバー証明書が有効になるはずです。

最終更新日 2024-12-13
この記事を共有しませんか?
ブックマーク ポスト