Help us understand the problem. What is going on with this article?

SSLを利用するための自己証明書(オレオレ証明書)の設定メモ

※2020/07/12 追記

こちらの記事のほうがより詳細なことが書かれていますので、サクッと設定したい場合は本記事でも良いとは思いますが、ご興味ある方はこちらの記事もおすすめします。

オレだよオレオレ認証局で証明書つくる

SSLとは

SSL(Secure Socket Layer)とは、インターネット上で情報を暗号化し、送受信できるプロトコル(一般にhttps://と表記されるもの)。顧客情報やクレジットカード情報、その他、管理情報などを扱う際はこのSSLを利用してセキュアに通信する必要がある。

SSLサーバー証明書

SSLを利用するにはSSLサーバー証明書をインストールする必要がある。正規にはサーバ証明書を購入する必要があるが、ここでは非正規の自己証明書を自分で作成する手順を記載。厳密には自己証明書とオレオレ証明書には違いがあるが、ここでは割愛。

秘密鍵(key)の作成

# モジュールのインストール
$ yum -y install mod_ssl

# 秘密鍵の作成
$ openssl genrsa -aes128 2048 > server.key

-aes128は暗号化方式。(詳しくはGoogle先生に…w)使用可能な暗号化方式を確認するには、openssl enc --helpというコマンドを実行すれば一覧表示される。2048という数字は鍵の長さ。なにやら鍵の長さは2048ビット以上が推奨されているので、最低でも2048を指定する。拡張子は.pemもあるけど、個人的には「鍵」なので.keyを使っている。

上記コマンドを実行すると、以下のようにパスフレーズを聞かれるので、任意のものを設定。

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

公開鍵(csr)の作成

CSR(Certificate Signing Request)とは、SSL証明書を作成する元になる情報が記載されているもの。内容は、組織名やサーバのアドレスなどの方法。

# 公開鍵の作成
# server.keyは先ほど作成したもの
$ openssl req -new -key server.key > server.csr

秘密鍵と同様に、上記コマンドを実行すると、以下のようにいろいろ聞かれるので、適宜変更して設定。

Enter pass phrase ofr server.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,
fi 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) []: Shibadaimon, Minato-ku   ←(市区町村名?)
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Example Inc.   ←(会社名)
Organizational Unit Name (eg, section) []: Example Section   ←(?)
Common Name (eg, YOUR name) []: example.com   ←(任意)
Email Address []: hoge@fuga.jp   ←(メールアドレス)


Pleaseenter thee following 'extra' attributes to be sent with your certificate request
A challenge password[]: パスワード   ←(任意)
An optional company name []: hogehoge   ←(任意)

よく分からなかったら、パスフレーズとパスワード以外は空白でも問題なかった(はず)なので、そのままenterでも作成される。

デジタル証明書(crt)の作成

デジタル証明書とは、公開鍵が真正である証明するデータ。正式なものでは、認証局(CA)を通してデータの作成者を証明することができる。
自分も詳しくは理解していないので、ちゃんと調べてみてください。

# デジタル証明書の作成
# server.keyは先ほど作成したもの
$ openssl x509 -in server.csr -days 365000 -req -signkey server.key > server.crt

こちらもコマンドを実行すると、再度パスフレーズを聞かれるので、入力。

Signature ok
subject=/C=JP/ST=Tokyo/L=Shibadaimon,Minato-ku/O=ExampleInc./OU=Example
Section/CN=example.com/emailAddress=hoge@fuga.jp

Getting Private key
Enter pass phrase ofr server.key: パスフレーズ
unable to write 'random state'

最後のパスフレーズはserver.keyを作成した時に設定したものを入力する。
以上で鍵、証明書の作成は終了。

Apacheの設定

Apacheの設定では、通常のhttp(ポート:80)の設定とは別に、https(ポート:443)の設定を行う必要がある。(SSLではポート番号は443)

/etc/httpd/conf/httpd.confまたはhttpd.confにてincludeされる.confファイルのどこでもいいので下記を追記。

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/httpd/conf/server.crt
    SSLCertificateKeyFile /etc/httpd/conf/server.key

    ... (以下httpでの設定と同様)
</VirtualHost>

鍵ファイルと証明書を上記で指定したディレクトリに移す。最後にApacheを再起動して完了。

以上、ではでは(=゚ω゚)ノ

clown0082
A Servant Leader of front-end team/an Executive/CEO(secondary) at Yumemi, Inc. We are the lions. CLI creator by nodejs, Riot.js(Collaborator), Challenge of an ordinary engineer.
http://kito0039.hatenablog.com
yumemi
みんなが知ってるあのサービス、実はゆめみが作ってます。スマホアプリ/Webサービスの企画・UX/UI設計、開発運用。Swift, Kotlin, PHP, Vue.js, React.js, Node.js, AWS等エンジニア・クリエイターの会社です。Twitterで情報配信中https://twitter.com/yumemiinc
http://www.yumemi.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away