OpenSSLとは何か?
OpenSSL は OpenSSL Project によって開発されたライブラリで、ネットワークトラフィックを暗号化するための SSL と TLS の実装をオープンソースで提供しています。OpenSSL は様々な Unix ベースのディストリビューションで容易に利用でき、証明書や RSA 秘密鍵を生成したり、一般的な暗号関連のタスクを実行するために使用することができます。
自己署名SSL証明書の制限事項
OpenSSLを使ってSSL証明書を生成する場合、それは “自己署名 “とみなされます。これは、SSL証明書が認証局(CA)からではなく、自分自身の秘密鍵で署名されていることを意味します。
そのため、このSSL証明書は「信頼」できないので、一般公開されるサイトには使用しないでください。もし使用した場合、ユーザーはブラウザから証明書に関する警告を受ける可能性があります。 自己署名証明書は、ローカル開発またはバックグラウンドで実行されるアプリケーションで、インターネットに面していない場合に便利です。 また、LetsEncrypt を使用するか、Comodo CA などの信頼できる機関によって検証された証明書を取得することもできます。インストール
ほとんどのLinuxディストリビューションは、すでにデフォルトでOpenSSLのバージョンを組み込んでいます。そうでない場合は、簡単にインストールすることができます。
UbuntuやDebianでは、apt
コマンドでインストールすることができます。
sudo apt install openssl
CentOS (またはその代替) では、yum
コマンドを使用してインストールすることができます。
sudo yum install openssl
また、ウェブサイトから “.tar.gz” ファイルとして簡単にダウンロードすることができます。
基本的な使用法
OpenSSL がインストールできたので、このプログラムが提供する基本的な機能のいくつかを見てみましょう。
まず、OpenSSL のバージョンやその他の関連情報を見ることから始めましょう。openssl version -a
提供されているマニュアルを確認することができます。
openssl ヘルプ
設定ファイルを使って証明書を生成する
OpenSSLを使用して証明書を生成する方法はたくさんあります。そのうちの1つは、組織に関する詳細を指定する設定ファイルを使用する方法です。
まず、「config.conf」という設定ファイルを作成し、Nanoで編集します。sudo nano example.conf
以下は、設定ファイルの内容の例です。
[req]
default_bits = 2048
プロンプト = no
default_md = sha256
req_extensions = req_ext
x509_extensions=v3_ca。
識別名 = dn
[dn]
C = US
ST = カリフォルニア
L = ロサンジェルス
O = 組織
OU = 営業
電子メールアドレス = test@test.com
CN = www.org.test.com
[ v3_ca ]です。
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:常に,issuer:常に
basicConstraints = CA:true
[req_ext]の場合
subjectAltName = @alt_names
[alt_names]
DNS.1 = test.example.com
これをコピーしてファイルに貼り付けて、組織の情報を反映させるために必要な変更を行えばよい。
次に、RSA秘密鍵を生成して、それを使ってルート証明書を生成する必要があります -。openssl genrsa -out example.key 2048
この場合、out
フラグは生成される鍵の名前を指定するために使用します。また、鍵のサイズは、RSA鍵のデフォルトである2048ビットを指定します。
openssl req -new -key example.key -out example.csr -config example.conf
この場合、-key
フラグで RSA 鍵を指定し、-out
フラグで CSR ファイル名を指定し、-config
フラグで設定ファイル名を指定します。
openssl req -x509 -sha256 -nodes -new -key example.key -out example.crt -config example.conf
このルート証明書を生成する過程で、-sha256
フラグを使用して、メッセージダイジェストにSHA256を指定しています。
openssl x509 -sha256 -CAcreateserial -req -days 30 -in example.csr -extfile example.conf -CA example.crt -CAkey example.key -out final.crt
CA フラグはルート証明書を、
-CAkey フラグは秘密鍵を、
-extfile` は設定ファイルの名前を指定する。final.crt “ファイルは、あなたが望むSSL証明書になります。
設定ファイルなしで証明書を生成する
また、設定ファイルなしでOpenSSLを使用して証明書を生成することもできます。
まず、RSA秘密鍵を生成します。openssl genrsa -out example.key 2048
次に、CSR を生成する必要があります。
openssl req -new -key example.key -out example.csr
CSRを生成する際に、あなたの組織に関する質問に答えるよう促されます。
最後に、証明書そのものを生成します。openssl x509 -req -days 30 -in example.csr -signkey example.key -out example.crt
鍵と証明書の検証
鍵や証明書はOpenSSLを使って、check
フラグで簡単に確認・検証することができます。
openssl rsa -check -in example.key
証明書署名要求の確認ができます。
openssl req -text -noout -in example.csr
と証明書も確認できます。
openssl x509 -text -noout -in example.crt
よくある質問
1. Heartbleedについてまだ心配する必要がありますか?
Heartbleed (CVE-2014-0160) は、2014年にOpenSSLで見つかった古い脆弱性です。OpenSSLを実行しているTLSサーバーとクライアントの両方が影響を受けました。発見から数日後にはすぐにパッチがリリースされ、最新のOpenSSLを使用している限り、この脆弱性は2022年には心配するようなものではありません。
DebianやUbuntuベースのシステムでOpenSSLを使用している場合、以下のコマンドを実行することでいつでもアップデートすることができます。sudo apt update && sudo apt upgrade openssl
2. SSL証明書の有効期限はどれくらいですか?
これは証明書を生成する際に選択した値に依存します。これは、証明書を生成する際に -days
フラグを使用して指定することができます。