1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenSSL コマンドで自己署名 SSL/TLS サーバ証明書を作成する (SAN 対応)

Posted at

Web アプリケーションの開発時に、Web ブラウザから (localhost ではなく) 特定のドメイン名で Web サーバに対して HTTPS アクセスする必要が生じることがある。その場合、自己署名証明書を発行して設置するのが最も簡単である。

自己署名証明書を作成する

自己署名証明書は OpenSSL コマンドで簡単に作成できる。

以下は example.com とそのサブドメインのワイルドカード *.example.com の証明書を発行するコマンド例。

$ openssl req \
    -x509 \
    -newkey rsa:4096 \
    -noenc \
    -keyout example.com.key \
    -subj "/CN=example.com (self-signed)" \
    -addext "subjectAltName = DNS:example.com, DNS:*.example.com" \
    -days 365 \
    -out example.com.crt

秘密鍵ファイル (.key) と証明書ファイル (.crt) が作成されるので、これらを Web サーバに設置すればよい。

オプションの解説

より詳しくは man openssl-req を参照。

  • -x509
    • そもそも openssl req は証明書署名リクエスト (CSR) を作成するコマンドだが、-x509 オプションを使用した場合は CSR ではなく自己署名した証明書が作成される
  • -newkey rsa:4096
    • 秘密鍵を指定するのではなく新規作成する
    • 新規作成する秘密鍵は 4096 ビットの RSA 鍵とする
  • -noenc
    • 新規作成する秘密鍵ファイルは暗号化しない
  • -keyout example.com.key
    • 出力する秘密鍵ファイル名
  • -subj "/CN=example.com (self-signed)"
    • 証明書の CN (Common Name) を指定する
    • 昔は CN にドメイン名を指定していたが、最近の Web ブラウザは SAN が指定されている場合は CN を見ないらしく「指定する文字列はなんでもいいのでは?」ということでこの例では (self-signed) などと入れてみている
  • -addext "subjectAltName = DNS:example.com, DNS:*.example.com"
    • SAN (Subject Alternative Name) を指定する
    • このオプションは OpenSSL 1.1.1 以降で使用可能で、それ以前の場合は別の方法で SAN を指定する必要がある
  • -days 365
    • 証明書の有効期限は 365 日とする
  • -out example.com.crt
    • 出力する証明書ファイル名

自己署名証明書を信頼する (macOS)

自己署名証明書は Web ブラウザから信頼されていないので当然のようにエラーが出る。何らかの方法で Web ブラウザまたは OS に対して「この証明書は信頼してもよい」と設定する必要がある。

macOS の場合、証明書をキーチェーンに追加した上で「SSL」「X.509 基本ポリシー」を信頼するように設定すれば Web ブラウザから見たときにエラーが出なくなる。

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?