Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

OpenSSL完全ガイド!インストールから証明書作成まで実践的に解説

OpenSSLは、インターネット通信のセキュリティを保つために必要不可欠なツールです。証明書の作成や暗号化、復号化など、さまざまな操作を簡単に学べます。このガイドを通じて、OpenSSLをしっかりと理解し、実務に役立てましょう。

中村 拓也

中村 拓也

Updated on 12月 4, 2024

OpenSSLは、インターネット通信を暗号化し、セキュリティを強化するための重要なツールです。

はじめに

証明書って何?」「OpenSSLを使えばいいと聞いたけど、、」とお悩みの皆さんへ。この記事では、初めてOpenSSLを使う方のために、基本的な使い方から証明書の作成方法までをわかりやすく説明します。暗号化通信の設定や証明書の取り扱いについて、スムーズに理解できるようサポートします。

💡
詳細に入る前に、APIを開発しているかアプリケーションを構築している場合は、Apidogを無料でダウンロードして、APIテスト、設計、ドキュメントをプロのように管理してください。
button
apidogクライアント

OpenSSLとは?

OpenSSLは、オープンソースの暗号化ツールキットです。主にSSL/TLS通信の暗号化や、データの暗号化・復号化を行います。インターネット上で安全に情報を送受信するために広く使われています。

OpenSSLのメリット

OpenSSLを使うと、Webサイトのセキュリティ強化、電子メールの暗号化、ファイルの暗号化などが簡単にできます。また、証明書を自分で作成できるので、コストを抑えつつ高いセキュリティを実現できます。

  • 無料で利用可能
  • 広範なサポート
  • 高い信頼性

初心者向け学習のポイント

OpenSSLを学ぶ際、まずはインストールと基本的なコマンドを理解することが大切です。その後、証明書作成や暗号化技術に慣れ、実践的なスキルを身につけましょう。

環境構築

OpenSSLを始めるためには、まず環境を整える必要があります。このセクションでは、必要なものの準備からインストール手順までを説明します。

必要なもの

OpenSSLを使うには、次のものが必要です:

  • インターネット接続 (インストールパッケージのダウンロードに必要です。)
  • OpenSSLのインストール
  • コマンドラインツール(WindowsならPowerShell、macOSやLinuxならターミナル)

インストール手順

Windows

  1. OpenSSLの公式サイトからWindows用インストーラーをダウンロードします。
  2. インストーラーを実行し、インストールします。
  3. 環境変数PATHにOpenSSLを追加します。

macOS

macOSでは、Homebrewを使うと簡単にインストールできます。次のコマンドを実行します:

brew install openssl
  • Homebrewがインストールされていない場合は、公式サイトの手順に従ってインストールしてください。

Linux

Linuxでは、パッケージマネージャを使ってインストールします。例えば、Ubuntuでは次のコマンドです:

sudo apt install openssl
  • ターミナルを開き、パッケージマネージャを使用してインストールします。
sudo apt-get install openssl

動作確認

インストールが完了したら、次のコマンドで正常にインストールされたか確認します:

openssl version

これでバージョンが表示されれば、インストールは成功です。

基本操作

OpenSSLを使って、基本的な操作を行います。

ヘルプコマンド

OpenSSLには多くのコマンドやオプションがあります。以下のコマンドでヘルプを表示できます:

openssl help

バージョン確認

インストールされたOpenSSLのバージョンを確認するには、次のコマンドを実行します:

openssl version

暗号化・復号化

OpenSSLを使って、データの暗号化と復号化ができます。

暗号化

ファイルを暗号化するには、次のコマンドを使います:

openssl enc -aes-256-cbc -in plaintext.txt -out encrypted.txt

復号化

暗号化したファイルを復号化するには、次のコマンドを使います:

openssl enc -d -aes-256-cbc -in encrypted.txt -out decrypted.txt

ハッシュ計算

ファイルや文字列のハッシュ値を計算するには、次のコマンドを使います:

openssl dgst -sha256 file.txt

証明書作成

ここからは、OpenSSLを使用して証明書を作成する方法について学びます。証明書は、安全な通信を確立するために必要なもので、サーバーやクライアントの身元を証明します。以下の手順に従って、秘密鍵の生成から自己署名証明書の発行、CA証明書の作成までを実践してみましょう。

秘密鍵とは?

秘密鍵は暗号化において重要な役割を果たします。公開鍵暗号方式では、公開鍵と秘密鍵のペアを使用して、安全な通信を行います。

CSR(証明書署名要求)とは?

CSRは、証明書を発行してもらうために必要なリクエストです。CSRには公開鍵情報や識別情報が含まれています。

例えば、パスポートを申請する際に必要な書類のようなものです。CSRを作成する際には、以下の情報を入力する必要があります。

フィールド名 説明
Country Name (C) 国名を2文字の国コードで入力します。 JP
State or Province Name (ST) 都道府県名を入力します。 Tokyo
Locality Name (L) 市区町村名を入力します。 Minato-ku
Organization Name (O) 会社名や組織名を入力します。 Example Corp
Organizational Unit Name (OU) 部門名などを入力します。 IT Department
Common Name (CN) サーバーのFQDN(完全修飾ドメイン名)を入力します。 www.example.com
Email Address 担当者のメールアドレスを入力します。 admin@example.com

これらの情報を入力して、CSRを作成します。

openssl req -new -key private.key -out request.csr

CSRを作成する際の実行例です。

openssl req -new -key private.key -out request.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

-----
Country Name (2 letter code) [AU] JP
State or Province Name (full name) [Some-State] Tokyo
Locality Name (eg, city) [] Minato-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd] Example Corp
Organizational Unit Name (eg, section) [] IT Department
Common Name (e.g. server FQDN or YOUR name) [] www.example.com
Email Address [] admin@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password [] 
An optional company name []

上記のように入力が求められます。A challenge passwordAn optional company nameは追加の属性として入力が求められますが、これらは証明書のセキュリティや機能に直接関与しないため、通常は入力する必要はありません。特に必要がなければEnterキーを押して進めてください。

他に入力を求められることがある項目として、Subject Alternative Name (SAN)があります。これにより、1つの証明書で複数のドメイン名をサポートすることができます。これを指定するには、CSR作成時に設定ファイルを使用するのが一般的です。

自己署名証明書の作成

自己署名証明書は、自分自身で発行した証明書で、テストや実験用に使用できます。作成方法は次の通りです:

フィールド名 説明
Country Name (C) 国名を2文字の国コードで入力します。 JP
State or Province Name (ST) 都道府県名を入力します。 Tokyo
Locality Name (L) 市区町村名を入力します。 Minato-ku
Organization Name (O) 会社名や組織名を入力します。 Example Corp
Organizational Unit Name (OU) 部門名などを入力します。 IT Department
Common Name (CN) サーバーのFQDN(完全修飾ドメイン名)を入力します。 www.example.com
Email Address 担当者のメールアドレスを入力します。 admin@example.com
Certificate Validity (days) 証明書の有効期間を日数で入力します。 365
openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout mykey.key -out mycert.csr
openssl x509 -req -in mycert.csr -signkey mykey.key -out mycert.crt

CA証明書の発行

CA証明書は、信頼できる認証機関が発行する証明書で、インターネット上の通信を安全に保つために使用されます。CA証明書を作成するには、以下の手順を実行します。

秘密鍵生成

CA証明書を発行する前に、CAの秘密鍵を生成します:

openssl genpkey -algorithm RSA -out ca.key

CA証明書発行

次に、CAの自己署名証明書を発行します。以下の情報を入力します:

フィールド名 説明
Country Name (C) 国名を2文字の国コードで入力します。 JP
State or Province Name (ST) 都道府県名を入力します。 Tokyo
Locality Name (L) 市区町村名を入力します。 Minato-ku
Organization Name (O) 会社名や組織名を入力します。 Example Corp
Organizational Unit Name (OU) 部門名などを入力します。 IT Department
Common Name (CN) サーバーのFQDN(完全修飾ドメイン名)を入力します。 www.example.com
Email Address 担当者のメールアドレスを入力します。 admin@example.com
Certificate Validity (days) 証明書の有効期間を日数で入力します。 365
openssl req -new -x509 -key ca.key -out ca.crt -days 365

詳細設定による証明書作成(オプション)

設定ファイルを使用して、より高度な証明書の作成ができます。

設定ファイルを使用したCSR作成

設定ファイルを使うことで、複雑な証明書要求を簡単に作成できます。

  • 1.設定ファイル(例:csr_config.cnf)を作成します。
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[ req_distinguished_name ]
C = JP
ST = Tokyo
L = Minato-ku
O = Example Corp
OU = IT Department
CN = www.example.com
emailAddress = admin@example.com

[ v3_req ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = www.example.com
DNS.2 = example.com
  • 2.設定ファイルを使用してCSRを作成します。
openssl req -new -key private.key -out request.csr -config csr_config.cnf

設定ファイルを使用した自己署名証明書作成

設定ファイルを使うと、自己署名証明書の作成も自動化できます。

  • 1.設定ファイル(例:selfsigned_config.cnf)を作成します。
[req] distinguished_name = req_distinguished_name x509_extensions = v3_ca prompt = no
[ req_distinguished_name ]
C = JP
ST = Tokyo
L = Minato-ku
O = Example Corp
OU = IT Department
CN = www.example.com
emailAddress = admin@example.com

[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
```
  • 2.設定ファイルを使用して自己署名証明書を作成します。
openssl req -x509 -key private.key -out selfsigned.crt -days 365 -config selfsigned_config.cnf

設定ファイルを使用したCA証明書作成

CA証明書の発行も設定ファイルを使って効率的に行えます。

  • 1.設定ファイル(例:ca_config.cnf)を作成します。
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
prompt = no

[ req_distinguished_name ]
C = JP
ST = Tokyo
L = Minato-ku
O = Example Corp
OU = IT Department
CN = Example CA
emailAddress = admin@example.com

[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
  • 2.設定ファイルを使用してCA証明書を作成します。
openssl req -x509 -key ca.key -out ca.crt -days 3650 -config ca_config.cnf

これにより、各証明書の作成時に必要なフィールドを設定ファイルに保存し、毎回同じ情報を入力する手間を省くことができます。設定ファイルを使用することで、証明書作成の手順が簡略化され、扱いやすくなります。

操作手順:SSL証明書をApidogに追加する

APIのセキュリティをさらに確保するために、一部のAPIでは、クライアント証明書が有効にされています。そうすると、当該APIにリクエストを送信する時に、SSLクライアント証明書を添付して送信する必要があります。

button

この部分では、SSLクライアント証明書をAPIクライアントに追加して、リクエストを送信してレスポンスを取得する操作手順を皆さんに紹介します。ここでSSL証明書を簡単に追加できるAPIクライアントのApidogを使用して作業を進めることがおすすめです。ApidogはAPIのライフサイクル管理ツールとして、APIのリクエストとレスポンス取得、APIテスト自動化、モックサーバーなどの機能を利用することができますし、クライアント側のSSL証明書を追加して、簡単にSSL化されたサーバーからレスポンスを取得できます。

それでは、次のステップを参照して、SSL証明書をAPIクライアントに追加して、API通信の暗号化を実現することができます。

ステップ⒈Apidogを立ち上げ、SSLクライアント証明書が必要となるAPIを開きます。

ステップ⒉設計」モードに切り替え、上部のメニューバーで「変更」タブを選択して、Requestパラメータで「設定」をクリックします。

apidogクライアント

ステップ⒊証明書の管理」をクリックします。

①CA証明書をオンにして、PEMファイルをアップロードします。

CA証明書の管理

②「クライアント証明書を追加」をクリックして、必要な設定を終えます。

証明書の追加

まとめ

OpenSSLは、インターネット通信のセキュリティを保つために欠かせないツールです。証明書の作成から、暗号化・復号化、ハッシュ計算まで、さまざまな用途に対応できます。これらの基本的な操作を覚えて、セキュリティに関する知識を深めていきましょう。

初心者必見!Linuxコマンドgrepと正規表現の使い方観点

初心者必見!Linuxコマンドgrepと正規表現の使い方

grep コマンドは、LinuxやUnix系システムでファイル内のテキストを効率的に検索するための強力なツールです。基本的な使い方から高度なオプション、正規表現を使った検索方法まで、幅広い知識を得ることができます。本記事を読んで、実際に手を動かして検索のスキルを磨きましょう。

中村 拓也

12月 3, 2024

初心者向け:SQLとクエリの違いを徹底解説!簡単なSQL文の書き方も紹介観点

初心者向け:SQLとクエリの違いを徹底解説!簡単なSQL文の書き方も紹介

SQLはデータベース操作において強力なツールであり、基本的なSQL文を習得することはデータベース管理の第一歩です。この記事では、IT業界の初心者や愛好者向けに、クエリとSQLの違いを解説し、簡単なSQL文の書き方を紹介します。

中村 拓也

12月 2, 2024

押さえておきたい!Faker.jsとApidogによるモックデータ生成法観点

押さえておきたい!Faker.jsとApidogによるモックデータ生成法

Faker.jsとApidogを使用することで、リアルなデータを効率的に生成し、API開発を加速させることが可能です。

中村 拓也

11月 27, 2024