DigiCert KnowledgeBase - Technical Support-hero

Knowledge Base

OpenSSL Quick Reference Guide (日本語)

Solution ID : INFO141
Last Modified : 2025/11/17

最も一般的なOpenSSLコマンドの使い方を学ぶ

OpenSSLは、秘密鍵の生成、CSRの作成、SSL/TLS証明書のインストール、証明書情報の特定などに広く利用されているオープンソースのコマンドラインツールです。このクイックリファレンスガイドは、OpenSSLの最も一般的なコマンドとその使い方を理解するのに役立ちます。

このガイドは包括的なものではありません。OpenSSLについてより深く包括的に知りたい場合は、Ivan Ristić著のOpenSSL Cookbookを参照することをお勧めします。

注記: このガイドの作成に使用されたシステムは Ubuntu 16.04.3 LTS です。
一部のコマンド例では、わかりやすくするために '\' (バックスラッシュ) を使用して改行しています。

OpenSSL コマンドと CSR 生成の詳細を確認する時間がない場合、または時間を節約したい場合は、OpenSSL CSR Wizardを確認してください。


OpenSSLのバージョンを確認する

秘密鍵またはCSRを生成するための準備において、使用しているOpenSSLのバージョンを確認することは重要な第一歩です。OpenSSLのバージョンによって、鍵生成時に使用できる暗号化アルゴリズムとサポートされるプロトコルが決まります。例えば、OpenSSLバージョン1.0.1はTLS 1.1とTLS 1.2をサポートした最初のバージョンです。また、使用しているOpenSSLのバージョンを把握しておくことは、問題が発生した場合のトラブルシューティングのサポートを受ける際にも重要です。

実行しているOpenSSLのバージョンを確認するには、次のコマンドを使用します:

openssl version -a


このコマンドでは、-aスイッチにより、以下の完全なバージョン情報が表示されます。:

  • バージョン番号とバージョンリリース日 (OpenSSL 1.0.2g 1 Mar 2016).
  • ライブラリで構築されたオプション (options).
  • 証明書と秘密鍵が保存されるディレクトリ (OPENSSLDIR).


openssl version -aコマンドを使用すると、次の出力が生成されました。:

OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -
D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-
strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-
Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -
DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -
DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -
DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"

OpenSSL を使用した CSR の作成

SSL証明書を取得するための最初のステップは、OpenSSLを使用して証明書署名要求(CSR)を作成し、証明機関(CA)(例:DigiCert)に送信することです。CSRには、証明書で保護する共通名(Common Name)、会社情報、公開鍵が含まれます。CSRを作成するには、公開鍵を抽出するための秘密鍵が必要です。これは、既存の秘密鍵を使用することも、新しい秘密鍵を生成することもできます。 

セキュリティに関する注意事項: 既存の秘密鍵の使用に関連するセキュリティ上の問題と、秘密鍵の作成が非常に簡単で完全に無料であるため、CSR を作成するたびに新しい秘密鍵を生成することをお勧めします。


鍵生成オプションの決定

キーを生成するときは、キー アルゴリズム、キー サイズ、パスフレーズを使用するかどうかの 3 つの点を決定する必要があります。

鍵アルゴリズム

鍵アルゴリズムについては、互換性を考慮する必要があります。そのため、RSAの使用をお勧めします。ただし、ECDSAなどの他のアルゴリズムを使用する必要がある場合は、そのアルゴリズムも使用できますが、互換性の問題が発生する可能性があることに注意してください。

注記: このガイドでは、RSA アルゴリズムを使用したキーの生成についてのみ説明します。

鍵のサイズ

鍵サイズについては、RSAを使用する場合は少なくとも2048ビット、ECDSAを使用する場合は少なくとも256ビットの長さを選択する必要があります。これらはSSL証明書で許可されている最小の鍵サイズです。より大きな鍵サイズを使用する必要がない限り、RSAの場合は2048ビット、ECDSAの場合は256ビットのままにすることをお勧めします。

注記: OpenSSLの古いバージョンでは、鍵サイズが指定されていない場合、デフォルトの鍵サイズである512が使用されます。2048未満の鍵サイズは安全ではないとみなされるため、使用しないでください。

パスフレーズ

パスフレーズについては、使用するかどうかを決める必要があります。使用した場合、秘密鍵は指定された暗号化方式で暗号化され、パスフレーズなしでは使用できなくなります。どちらの方法にも長所と短所があるため、パスフレーズを使用する場合と使用しない場合の違いを理解することが重要です。このガイドでは、例としてパスフレーズを使用しません。


秘密鍵の生成

鍵アルゴリズム、鍵サイズ、パスフレーズを使用するかどうかを決定したら、秘密鍵を生成する準備が整います。


RSAアルゴリズムを使用して秘密鍵を生成するには、次のコマンドを使用します。:

openssl genrsa -out yourdomain.key 2048

このコマンドは、RSAアルゴリズム(genrsa)を使用し、鍵長2048ビット(2048)の秘密鍵を、現在のディレクトリにyourdomain.key(-out yourdomain.key)という名前で生成します。生成された鍵は、OpenSSLのPEM形式を使用して作成されます。


秘密鍵の生のエンコードされた内容(PEM形式)を表示するには、次のコマンドを使用します。:

cat yourdomain.key

ファイルの内容はランダムなテキストの塊のように見えるかもしれませんが、実際にはキーに関する重要な情報が含まれています。


秘密鍵をデコードしてその内容を表示するには、次のコマンドを使用します。:

openssl rsa -text -in yourdomain.key -noout

-noout スイッチは、秘密キーのエンコードされたバージョンの出力を省略します。

公開鍵の抽出

秘密鍵ファイルには秘密鍵と公開鍵の両方が含まれています。必要に応じて、秘密鍵ファイルから公開鍵を抽出できます。

公開鍵を抽出するには次のコマンドを使用します:

openssl rsa -in yourdomain.key -pubout -out yourdomain_public.key

 

CSRの作成

秘密鍵を生成したら、CSRを作成する準備が整います。CSRはPEM形式で作成され、秘密鍵の公開鍵部分と、お客様(またはお客様の会社)に関する情報が含まれます。

新しく生成された秘密鍵を使用してCSRを作成するには、次のコマンドを使用します。:

openssl req -new -key yourdomain.key -out yourdomain.csr

コマンドを入力すると、一連の質問が表示されます。これらの質問への回答はCSRに埋め込まれます。

以下の質問に答えてください:

国名(2文字コード) 会社の法的所在地を示す 2 文字の国コード。
都道府県名(フルネーム) 会社が法的に所在する都道府県。
地域名(例:市)
会社が法的に所在する都市。
組織名 会社の法的に登録された名前 (例: YourCompany, Inc.)。
組織単位名(例:部署)
組織内の部署名。(オプションなので空白でも大丈夫です。Enter キーを押してください。)
コモンネーム(例:サーバーのFQDN) 完全修飾ドメイン名 (FQDN) (例: www.example.com)。
電子メールアドレス
メールアドレス。(オプションなので空白でも大丈夫です。Enter キーを押してください。)
チャレンジパスワード このオプションは空白のままにします。(Enter キーを押してください。)
任意の会社名
このオプションは空白のままにします。(Enter キーを押してください。)


上記のCSR質問の一部には、回答を空白のままEnterキーを押すとデフォルト値が使用されます。これらのデフォルト値は、OPENSSLDIRにあるOpenSSL設定ファイルから取得されます(OpenSSLのバージョン確認を参照)。デフォルト値を使用せずに質問を空白のままにしたい場合は、「.」(ピリオド)を入力してEnterキーを押します。

-subj Switchの使用

CSR を作成するときのもう 1 つのオプションは、-subj スイッチを使用して、コマンド自体に必要な情報をすべて提供することです。

CSRを生成する際に質問プロンプトを無効にするには、次のコマンドを使用します。:

openssl req -new -key yourdomain.key -out yourdomain.csr \ -subj "/C=US/ST=Utah/L=Lehi/O=Your Company, Inc./OU=IT/CN=yourdomain.com"

このコマンドは、秘密鍵ファイル (-key yourdomain.key) を使用して新しい CSR (-out yourdomain.csr) を作成し、CSR 情報 (-subj) を指定して質問プロンプトを無効にします。


1つのコマンドでCSRを作成する

秘密鍵を生成してから CSR を 2 つの別々の手順で作成する代わりに、実際には両方のタスクを一度に実行できます。

秘密鍵とCSRの両方を作成するには、次のコマンドを使用します。:

openssl req -new \ -newkey rsa:2048 -nodes -keyout yourdomain.key \ -out yourdomain.csr \ -subj "/C=US/ST=Utah/L=Lehi/O=Your Company, Inc./OU=IT/CN=yourdomain.com"

このコマンドは、パスフレーズ (-nodes) を使用せずに、2048 ビットのキー長 (rsa:2048) の RSA アルゴリズムを使用して新しい秘密鍵 (-newkey) を生成し、yourdomain.key (-keyout yourdomain.key) という名前の鍵 ファイルを作成します。

次に、コマンドは yourdomain.csr というファイル名の CSR を生成し (-out yourdomain.csr)、CSR の情報を指定します (-subj)。

注記:  (SAN) toOpenSSLを使用してCSRにサブジェクト別名(SAN)を追加することは可能ですが、手順は少し複雑です。証明書にSANを追加する必要がある場合は、DigiCert証明書のご購入時に注文フォームにSANを追加することで簡単に追加できます。 

CSR情報の検証

秘密鍵を使用して CSR を作成した後、CSR に含まれる情報が正しいこと、およびファイルが変更または破損していないことを確認することをお勧めします。

CSR を CA (DigiCert など) に送信する前に、次のコマンドを使用して CSR の情報を表示します。:

openssl req -text -in yourdomain.csr -noout -verify

-noout スイッチは、CSR のエンコード版の出力を省略します。-verify スイッチは、ファイルの署名が改ざんされていないことを確認します。

このコマンドを実行すると、次の出力が得られます。:

verify OK
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=US, ST=Utah, L=Lehi, O=Your Company, Inc., OU=IT, CN=yourdomain.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:bb:31:71:40:81:2c:8e:fb:89:25:7c:0e:cb:76:
[...17 lines removed]
Exponent: 65537 (0x10001)
Attributes:
a0:00
Signature Algorithm: sha256WithRSAEncryption
0b:9b:23:b5:1f:8d:c9:cd:59:bf:b7:e5:11:ab:f0:e8:b9:f6:
[...14 lines removed]


上記の出力の1行目を見ると、CSRが検証されたこと(verify OK)がわかります。4行目のSubject:フィールドには、CSR作成時に入力した情報が含まれています。この情報が正しいことを確認してください。

情報に誤りがある場合は、エラーを修正するために全く新しいCSRを作成する必要があります。これは、CSRファイルがデジタル署名されているためです。つまり、ファイル内の文字を1文字でも変更すると、CAによって拒否されます。


CSRをCAに送信する

CSR を CA (DigiCert など) に送信する準備ができたら、PEM 形式 (テキスト エディターで開いたときに表示される CSR の生のエンコードされたテキスト) を使用して送信する必要があります。

CSRの生の出力を表示するには、次のコマンドを使用します。:

cat yourdomain.csr

出力内容全体をコピーし ( -----BEGIN CERTIFICATE REQUEST----- から -----END CERTIFICATE REQUEST----- まで)  DigiCert 注文フォームに貼り付けます。

証明書情報の表示

CA(例:DigiCert)から証明書を受け取ったら、証明書の情報が正しく、秘密鍵と一致していることを確認することをお勧めします。これはx509コマンドを使用して行うことができます。

証明書の内容を表示するには、次のコマンドを使用します。:

openssl x509 -text -in yourdomain.crt -noout

 


鍵の一致を確認する

公開鍵と秘密鍵が一致していることを確認するには、各ファイルから公開鍵を抽出し、ハッシュ出力を生成します。3つのファイルはすべて同じ公開鍵とハッシュ値を共有している必要があります。

次のコマンドを使用して、各ファイルの公開鍵のハッシュを生成します。:

openssl pkey -pubout -in .\private.key | openssl sha256

openssl req -pubkey -in .\request.csr -noout | openssl sha256

openssl x509 -pubkey -in .\certificate.crt -noout | openssl sha256

注記: 3 つの個別の出力を生成するには、上記のコマンドを 1 つずつ入力する必要があります。

各コマンドは (stdin)= に続いて文字列を出力します。各コマンドの出力が一致する場合、各ファイルの鍵は同じです。ただし、不一致がある場合は鍵が一致していないため、証明書をインストールできません。

鍵不一致エラーは通常、CSR の生成に使用されたマシンとは異なるマシンに証明書をインストールすることによって発生します。

鍵不一致エラーが発生した場合は、次のいずれかを実行する必要があります。:

  • CSR を生成するために使用したマシンから証明書をインストールしようとしているマシンに秘密鍵を転送します。
  • 秘密鍵を使用してマシンに証明書をインストールします。
  • 完全に新しい鍵を生成し、証明書を使用するマシンに新しい CSR を作成します。

証明書形式の変換

OpenSSL はデフォルトで PEM 形式で鍵と CSR を生成します。ただし、別のシステムにエクスポートするために、鍵または証明書を別の形式に変換する必要がある場合があります。 

PEM to PKCS#12

PKCS#12形式は、証明書と秘密鍵の両方を保存するアーカイブファイルです。この形式は必要なファイルをすべて含んでいるため、証明書と鍵をあるシステムから別のシステムに移行するのに便利です。PKCS#12ファイルのファイル拡張子は.pfxまたは.p12です。

次のコマンドを使用して、PEM キーと証明書を PKCS#12 形式 (つまり、単一の .pfx ファイル) に変換します。:

openssl pkcs12 -export -name "yourdomain-digicert-(expiration date)" \ -out yourdomain.pfx -inkey yourdomain.key -in yourdomain.crt

注記: コマンドを入力すると、ファイルを暗号化するためのパスワードの入力を求められます。PKCS#12形式はシステム移行によく使用されるため、非常に強力なパスワードを使用してファイルを暗号化することをお勧めします。

このコマンドは、秘密鍵 (-inkey yourdomain.key) と証明書 (-in yourdomain.crt) を、フレンドリ名 (-name "yourdomain-digicert-(expiration date)") を持つ 1 つの .pfx ファイル (-out yourdomain.pfx) に結合します。expiration date は、証明書の有効期限です。


PKCS#12 to PEM

PKCS#12 形式には証明書と秘密鍵の両方が含まれているため、.pfx ファイルを PEM 形式に戻すには 2 つの別々のコマンドを使用する必要があります。

PKCS#12 (.pfx) ファイルから秘密鍵を抽出し、PEM でエンコードされた秘密鍵に変換するには、次のコマンドを使用します。:

openssl pkcs12 -in yourdomain.pfx -nocerts -out yourdomain.key -nodes

次のコマンドを使用して、PKCS#12 (.pfx) ファイルから証明書を抽出し、PEM エンコードされた証明書に変換します。:

openssl pkcs12 -in yourdomain.pfx -nokeys -clcerts -out yourdomain.crt

注記: キーと証明書を PEM 形式に変換するには、.pfx ファイルの暗号化に使用したパスワードを入力する必要があります。


PEMからDERへ

DER形式は、証明書または鍵情報をASN.1エンコーディングで保存します。PEM形式と同様に、DERは鍵と証明書の情報を別々のファイルに保存し、通常は同じファイル拡張子(.key、.crt、.csr)を使用します。以下の例では、わかりやすくするためにファイル拡張子.derを使用しています。

次のコマンドを使用して、PEMエンコードされた証明書をDERエンコードされた証明書に変換します。:

openssl x509 -inform PEM -in yourdomain.crt -outform DER -out yourdomain.der

次のコマンドを使用して、PEMでエンコードされた秘密鍵をDERでエンコードされた秘密鍵に変換します。:

openssl rsa -inform PEM -in yourdomain.key -outform DER -out yourdomain_key.der


DERからPEMへ

DERエンコードされた証明書をPEMエンコードされた証明書に変換するには、次のコマンドを使用します。:

openssl x509 -inform DER -in yourdomain.der -outform PEM -out yourdomain.crt

DERエンコードされた秘密鍵をPEMエンコードされた秘密鍵に変換するには、次のコマンドを使用します。:

openssl rsa -inform DER -in yourdomain_key.der -outform PEM -out yourdomain.key