OpenSSLでSSL証明書を生成する方法!Linuxでの手順を徹底解説
SSL/TLS証明書の生成は、多くのLinuxシステム管理者にとって日常的なタスクの一つです。幸い、管理者でなくても、オープンソースツール「OpenSSL」を使えば誰でも簡単に証明書を作成できます。OpenSSLは多くのLinuxディストリビューションにデフォルトで搭載されています。この記事では、OpenSSLとは何か、そのインストール方法、そして最も重要な、システム上でSSL/TLS証明書を生成する具体的な手順を詳しく解説します。
OpenSSLとは?
OpenSSLは、ネットワーク通信を暗号化するためのオープンソースのSSL/TLS実装を提供するために、OpenSSL Projectが開発したライブラリです。さまざまなUnix系ディストリビューションで広く利用でき、証明書やRSA秘密鍵の生成をはじめ、一般的な暗号化関連のタスク全般に活用できます。
自己署名SSL証明書の注意点
OpenSSLでSSL証明書を生成すると、それは「自己署名(self-signed)」証明書として扱われます。つまり、認証局(CA)ではなく、証明書自身の秘密鍵で署名されているということです。
そのため、この種のSSL証明書は「信頼された」ものとはみなされず、一般公開されているサイトには使用すべきではありません。使用した場合、訪問者のブラウザに証明書に関する警告が表示される可能性があります。
一方で、自己署名証明書は、ローカル開発環境やインターネットに公開されないバックグラウンドアプリケーションのテストなどには非常に便利です。
公開サイト向けの証明書が必要な場合は、Let's Encryptを利用するか、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 help
設定ファイルを使って証明書を生成する方法
OpenSSLで証明書を生成する方法は複数あります。その一つが、組織の詳細情報を記述した設定ファイルを使用する方法です。
まず、設定ファイル「example.conf」を作成し、Nanoエディタで編集します。
sudo nano example.conf
設定ファイルの記述例は以下の通りです。
[req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext x509_extensions= v3_ca distinguished_name = dn [dn] C = US ST = California L = Los Angeles O = Org OU = Sales emailAddress = test@test.com CN = www.org.test.com [ v3_ca ] subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = CA:true [req_ext] subjectAltName = @alt_names [alt_names] DNS.1 = test.example.com
この内容をそのままコピー&ペーストし、自分の組織の情報に合わせて必要な項目を書き換えてください。
次に、ルート証明書の生成に使用するRSA秘密鍵を作成します。
openssl genrsa -out example.key 2048
-outフラグは生成される鍵のファイル名を指定します。鍵サイズは2048ビットを指定していますが、これはRSA鍵の標準的なサイズです。
続いて、CSR(証明書署名要求)を生成します。
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
証明書署名要求(CSR)の内容確認:
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を使用していれば、現在この脆弱性を心配する必要はありません。
DebianやUbuntuベースのシステムでOpenSSLを使用している場合は、以下のコマンドで常に最新版に更新しておきましょう。
sudo apt update && sudo apt upgrade openssl
2. SSL証明書の有効期限はどのくらい?
有効期限は、証明書の生成時に指定した値によって決まります。-daysフラグを使うことで、証明書生成時に任意の有効期間を設定できます。
-
Kali Linuxを使ってAndroidスマホにアクセスする方法【Metasploit実践解説】
Androidスマートフォンは、多くの市販IoT機器への入り口となっています。Nestの煙感知器は専用のAndroidアプリで管理され、Nestサーモスタットも温度調整をアプリから行えます。スマートロックや玄関カメラなど、ほぼすべてのスマートデバイスがAlexaなどのマスターアプリから操作可能です。では、もし第三者がこうしたAndroidスマホへリモートアクセスできてしまったらどうなるでしょうか。「そんなことはあり得ない」と思っていませんか?本記事では、Kali Linuxの「Metasploit」を使ってAndroidスマホにバックドアを作成する仕組みを、基本的なデモ形式で解説します。
-
LinuxでGPGキーを生成する方法!暗号化・公開鍵の共有まで徹底解説
隠しておきたいファイルやメッセージはありませんか?それらを確実に守るためには、GPG暗号化キーの活用がおすすめです。Linux環境であれば、GnuPGさえインストールされていれば、コマンドラインから手軽にファイルを暗号化できます。 この記事では、いくつかの簡単なターミナルコマンドだけでGPGキーを生成し、実際の暗号化に活用するまでの手順を詳しく解説します。 GnuPGのインストール まずはGnuPGをインストールしましょう。Debian系やUbuntu系のディストリビューションでは、ターミナルを開いて次のコマンドを実行します。 sudo apt install gnupg FedoraなどDN