SSL証明書ジェネレーター
識別情報
証明書
秘密鍵(厳重に保管)
自己署名証明書は既定でブラウザーに信頼されません。ローカル開発、テスト、またはプライベートネットワークでのみ使用してください。
ローカル開発や内部テスト用の自己署名証明書を、ブラウザ内で直接生成します。RSA鍵長(2048、3072、4096ビット)、Common Name、Subject Alternative Names、有効期間、組織の基本情報を選べます。証明書とその秘密鍵はブラウザ内で作成され、当社のサーバーには一切送信されません。どちらもNginxやApache用にすぐ使えるPEMファイルとしてダウンロードできます。
証明書生成の仕組み
-
1
RSA鍵長を選ぶ
ほとんどのテストには2048ビットで十分です。3072や4096は速度を犠牲に鍵を大きくします。
-
2
サブジェクトとSANを入力する
Common Nameに加え、証明書が対象とすべきホスト名やIPをすべて入力します(最新のブラウザはCNを無視しSANを使用します)。
-
3
ブラウザ内で生成する
自己署名証明書が作成され、対応する秘密鍵で署名されます。すべてブラウザ内でローカルに行われます。
-
4
出力をダウンロードする
PEMエンコードの証明書(`cert.pem`)とPEM形式の秘密鍵(`key.pem`)。インストールの準備が整っています。
すべてはブラウザ内で行われます
このジェネレーターは完全にブラウザ内で動作します。RSA鍵ペアはJavaScriptの暗号ライブラリでローカルに作成され、証明書はお使いのデバイス上で署名されます。秘密鍵も証明書も当社のサーバーにアップロードされることはありません。とはいえ秘密鍵は秘密として扱ってください。所持する者は誰でもその証明書になりすませます。
自己署名とは何か
あなたが発行者であると同時にサブジェクトでもあります。証明書は自身の秘密鍵で署名されるため、公的な認証局(CA)がその正当性を保証しません。だからブラウザは警告を表示します。テスト、ローカル開発(localhost、dev.local)、および信頼させたいクライアントに証明書を配布できる内部サーバーには適しています。
公開インターネットが信頼する証明書が必要な場合、このツールは適切な手段ではありません。CAが署名した証明書(たとえばLet’s Encryptや有料CA)が必要で、それには証明書署名要求(CSR)とドメイン検証が必要ですが、このブラウザ用ツールはそれらを行いません。
証明書に含まれる内容
| フィールド | 備考 |
|---|---|
| サブジェクト (CN, O, C) | Common Name、組織、国 |
| Subject Alternative Names | 対象とする各ドメインまたはIP(重要!) |
| 公開鍵 | RSA。生成した秘密鍵から導出される |
| 発行者 | 自己署名なのでサブジェクトと同じ |
| 有効期間 | Not Before / Not After(指定した有効日数) |
| Key Usage | digitalSignature、keyEncipherment |
| Extended Key Usage | serverAuth、clientAuth |
| Basic Constraints | CA:FALSE(CAではないリーフ証明書) |
出力ファイル
key.pem、秘密鍵(保護してください、パーミッション0600)cert.pem、自己署名証明書(公開・配布可)
Nginxの場合
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
Apache 2.4以降の場合
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
SSLCertificateKeyFile /etc/ssl/private/key.pem
</VirtualHost>
自分のマシンで証明書を信頼させる
自分が管理するマシンでブラウザの警告を消すには、cert.pemをそのシステムまたはブラウザの信頼ストアにインポートします。これは自分で生成した証明書に限り、自分が所有するデバイスでのみ行ってください。mkcertのようなツールは複数サービス向けのローカルCAを自動化します。このジェネレーターは一度に1つの自己署名証明書を生成します。
自己署名が適さない用途
- 公開ウェブサイト。 ユーザーは警告を目にし、多くが離脱します。
- サードパーティAPIとの連携。 ほとんどのクライアントは未知の発行者を拒否します。
- 本番環境。 絶対に不可。公開インターネット上のものにはLet’s Encrypt(無料)か有料CAを使ってください。
よくある質問
いいえ。鍵ペアと証明書はブラウザ内で生成され、お使いのデバイスに留まります。何もアップロードされません。それでもダウンロードしたkey.pemは非公開に保ってください。所持する者は誰でもその証明書になりすませます。
第三者が接続するなら、いいえ。ブラウザは目立つ警告を表示します。無料(Let’s Encrypt、ZeroSSL)または有料のCAが署名した証明書を使ってください。自己署名は、両端を自分で管理する内部ネットワークでのマシン間通信には適しています。
以前はCNに主要ドメインを入れていました。最新のブラウザはホスト検証でCNを無視し、SANのみを使用します。常にすべてのホスト名をSANに入れてください。CNは読みやすさのための識別として主要ドメインを設定するだけにします。
はい、SANに*.example.comを入れてください。サブドメインの1階層を対象とします。複数階層には、複数のワイルドカード(*.example.comと*.dev.example.com)を追加します。
関連ツール
Atbash暗号エンコーダー
A-ZをZ-Aに対応させるヘブライ系の換字式暗号、Atbashでテキストをエンコードまたはデコードできます。同じ操作で暗号化と復号ができます。
AES暗号化 / 復号
OpenSSLのAES暗号方式で低リスクのテキストを暗号化・復号します。パスフレーズはSHA-256でハッシュされ、Base64出力はIVと暗号文です。
bcryptジェネレーター
平文パスワードからbcrypt hashを生成します。cost factorは4から13まで調整でき、Laravel、Django、Node、PHPと互換性があります。
シーザー暗号エンコーダー
シーザー暗号でテキストを暗号化・復号します。1-25の任意シフトに対応し、ROT13を特殊ケースとして扱い、句読点と大文字小文字を保持します。
Base32エンコーダー・デコーダー
RFC 4648アルファベットでBase32文字列をエンコード・デコードします。TOTPシークレット、大文字小文字を区別しないトークン、人が入力する識別子に便利です。
Base85エンコーダー・デコーダー
PostScriptやPDFファイルの中で使われているAdobe Ascii85形式でBase85をエンコード・デコードします。バイナリデータではBase64よりコンパクトです。