www.ni4.jp

MacのターミナルでSSL証明書取得申請に必要なCSRを作ってみた

ども、どもども。
普段はウェブディレクターとして仕事をしながら、たまにコードを書くことを趣味のようにしているワタシです。

さて、ウェブサイトの常時SSL化が当たり前になって久しいですが、ワタシが普段、SSL証明書の申請・発行に必要となるCSRを用意する際は、導入するサーバーの管理画面(PLESK)で作成していました。
ただ、今回申請するにあたってCSRの中に「メールアドレスを含めない」という必要があって、PLESKではそれができないことがわかりました。(メールアドレスの入力が必須だった)

ブラウザ上でCSRを作成できるツールも試したのですが、暗号化アルゴリズム(SHA2)の都合などもありうまく行かず、自分のMacでOpenSSLを使用してコマンド操作で作成することに。

いわゆる黒い画面ですが、これまでローカル環境の構築やサーバーの移転などで何度か使ってきたものの、CSRの作成は初めてのことだったので、色々調べながらやってみた備忘録を後々の自分のために書き残しておこうと思います。

※記載内容に誤りなどあった場合は、優しく教えてください(笑)

Table of Contents

Macに入っているOpenSSLを確認

Mac上でCSRを作成するにはOpenSSLというオープンソースソフトウェアを使用します。

そこでまずはMacにプリインストールされているOpenSSLのバージョンを確認します。
バージョン確認はMacのユーティリティにあるターミナルを起動して、コマンドで行います。

ターミナルの起動

ターミナルでのコマンド入力について

以降で入力するコマンドは、実際に入力する部分だけを記載しています。
よく「$」から記載されているのを見かけますが、この$はターミナルで最初に表示される以下の部分を省略したものです。

Last login: Wed Dec 23 06:40:50 on ttys000
nishiyama ~ %

OpenSSLのバージョンを確認する際は以下のようにコマンドを入力します。

Last login: Wed Dec 23 06:40:50 on ttys000
nishiyama ~ % openssl version

そのため、以降の説明では$以前を省略してコマンド部分だけを書いています。(半角スペースを入れることだけ注意)

openssl version

上記のコマンドを入力してENTERを押すと以下のようにバージョンが表示されます。

openssl version
LibreSSL 2.8.3

ワタシのMacは、2020年9月に購入したものですが、プリインストールされているOpenSSLはLibreSSLというものでした。
このままでも良いらしいのですが、CSR作成などの説明はその多くがOpenSSLで説明されているので、ワタシのMacにもインストールすることにします。

Homebrewのインストール

OpenSSLをMacにインストールするにはHomebrewというものを使用するのが良さそう、というわけでまずはそちらをインストールすることに。

Homebrewのインストールは、こちらの記事を参考にしました。

Homebrewのウェブサイトに記載されている以下をコピーして、ターミナルに貼り付け、ENTERを押すとインストールが始まります。(この記事を書いた時点では以下のコードでした)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

ENTERを押してしばらく待っているとパスワードを聞かれるので、Macのログインパスワードを入力します。
いわゆるアプリをインストールするときと同じですね。

パスワードを入力してENTERを押すと、今度はXcodeのインストールが始まります。
これはHomebrewの動作に必要となるものですが、インストールは自動でやってくれます。
またしばらく待っていると、Instllation successfull! と表示されます。

Homebrewのインストールが完了した状態

インストールが終わったら、以下のコマンドでHomebrewのバージョンを確認してみます。

brew -v

以下のようにバージョンが表示され、インストールが無事に終わりました。

Homebrewのバージョン確認

OpenSSLのインストール

続けてOpenSSLのインストールを進めます。
この手順は以下の記事を参考にしました。

ターミナルで以下を入力し、ENTERを押します。

brew install openssl

インストールが自動的に進み、しばらくすると上のブログ記事のように If you need to have this software first in your PATH run というメッセージが出てくるので、その部分をコピーして貼り付け、ENTERを押します。

echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc

上記のコマンドを終えた後、ターミナルを再起動します。( exit で終了して再度ターミナルを開く)
OpenSSLが無事にインストールされたのと、そのバージョンを以下のコマンドで確認します。

openssl version

先ほどまでLibreSSL 2.8.3だったものが、OpenSSLになっていることが確認できました。

OpenSSLのバージョン確認

以上でOpenSSLのインストールが完了です。

CSRの作成

続けて今回の目的である「ターミナルでCSR作成」へ進みます。

事前準備

CSRの作成には、まず鍵ペアを作る必要があります。(公開鍵と秘密鍵のペア)
また今回はその鍵ペアを作るために乱数生成用のダミーファイル(2000kb程度)を3つ必要としたので、それも用意しておきました。
ターミナルで mkfile コマンドを使用してダミーファイルを作ることもできますが、それだと「ファイルの中身が空だよ」とエラーが出てしまったので、今回は200kbのテキストファイルを用意することに。

200kbのテキストファイルは、半角英数字にして20万文字必要…
というわけで、ダミーテキスト生成ツールを使用してこのテキストデータを作成しました。

また、今回はCSR作成の「作業場所」をデスクトップで進めることにしたので、デスクトップ上に任意のフォルダ(CSR_create)を作成して、そこにダミーのテキストファイルを入れておきました。

ターミナルで作業場所へ移動

ここからターミナルでコマンドを使用しCSRを作成するのですが、通常その作業はMacユーザーのホームディレクトリ /Users/アカウント名 で行われます。
おそらくこのままでも問題ないのですが、今回はわかりやすく作業場所のフォルダへ移動することにします。

まずターミナルを起動した時に、ホームディレクトリにいることを確認します。
pwd コマンドを入力してENTERを押すと「現在の作業ディレクトリ」を確認できます。
ワタシのホームディレクトリは nishiyama なので、以下のようになりました。

pwd
/Users/nishiyama

続けて ls コマンドで「現在いるディレクトリのファイルやフォルダを一覧表示」します。
ホームディレクトリでこれを実行すると、その中に Desktop があることが確認できます。

以降、今回用意した作業ディレクトリまで、ls と cd コマンドで移動します。
cd コマンドでディレクトリを移動した際、一見して移動したのがわからないので、ls コマンドで確認しながら移動していきました。
実際に移動したときのターミナル画面が以下になります。

作業ディレクトリまで移動する

ダミーのテキストファイルがある作業ディレクトリまで移動したら、鍵ペアの作成へ進みます。

鍵ペアを作る

鍵ペアとCSRの作成はこちらの記事を参考にしました。

今回、鍵ペアの作成に乱数生成用ファイルを使用する必要があったので、以下のようにコマンドを入力して鍵ペアを作成しています。
(2048bitの鍵長で、鍵ペアのファイル名を servername.key としている内容になります)

openssl genrsa -des3 -rand dummy_1.txt:dummy_2.txt:dummy_3.txt 2048 > servername.key

上記を入力してENTERを押すと以下のメッセージが表示されます。

Generating RSA private key, 2048 bit long modulus
..............................++++++
...............++++++
unable to write 'random state'
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:

ここで設定するパスワード(パスフレーズ / pass phrase)は、取得したSSL証明書をサーバーにインストールする際に必要になります。
SSL証明書をインストールする際、一緒に秘密鍵(ここではservername.key)もインストールする必要がありますが、その際にパスワード付きのままではなく、パスワードを解除したファイルを用意してインストールする必要があります。(その解除にパスワードを使用します)
なお、このパスワードは非常に大切なものなので、漏洩はもちろん紛失等にも十分注意が必要です。

パスワードを入力してENTERを押すと、作業ディレクトリ内に servername.key が作成されます。

CSRを作る

上記で鍵ペアを作成したら、それを使用してCSRを作ります。
以下は暗号化アルゴリズムをSHA2とし、servername.csr という名前でCSRファイルを作成するコマンドです。

openssl req -new -key servername.key -sha256 -out servername.csr

上記を入力してENTERを押すと、鍵ペアのパスワード(パスフレーズ)とCSRに含めるサーバー識別名(DN)情報の入力を求められます。
各種情報を入力しますが、空欄とする場合には「.(ドット/ピリオド)」を使用します。

Enter pass phrase for servername.key:
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]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

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

入力後、ENTERを押すと作業ディレクトリ内に servername.csr というファイルが作成されます。

CSRの内容確認

作成されたCSRの内容をターミナルからコマンドで確認する方法も紹介されていますが、ブラウザ上で確認するツールなどもあるので、それらを使ってみるのも良いと思います。

SSL証明書の取得申請と今後

以上でSSL証明書の取得申請に必要なCSRの作成が完了しました。
今回はここまでになりますが、数日内にSSL証明書も取得できると思うので、次回はそれをインストールするところから続けようと思います。

今は「無事にSSL証明書を取得して、インストールが成功すること」を願っています(苦笑)

追記:2020年12月26日
続き、書きました!

にしやま やすふみ

札幌のウェブサイト・ホームページ制作会社 ジャクスタポジションで、代表とディレクターやってます。Movable Typeとラーメン、ザンギ、酒が好き。
プロフィール詳細はこちら

アクセスの多い記事