自己署名の暗号化鍵を発行しよう!
ここでは、SSLによる暗号化鍵の発行手順を掲載しています。
無料の認証局、StartSSLによる認証鍵の発行についてはこちらへ。
※CentOS 5のサポートは2017年3月をもって終了していますが、旧コンテンツとしてこちらのページは残しておきます。
SSLとは…?
SSL(Secure Socket Layer)は、インターネット上で送受信されるデータを暗号化する機能のことです。例えば、個人情報を扱う場面、特にクレジットカードの番号やネットバンキングなどへのログイン情報など、お金に関わる部分で多く使われています。
現在使われている暗号化は、公開鍵暗号方式というが主流です。公開鍵暗号方式では、インターネット上に暗号化用の鍵を公開し、自分宛のデータをその公開鍵によって暗号化してもらいます。自分に届いた暗号データを自分だけが持っている秘密鍵を使って解読します。
認証局とその役割
暗号化通信を行うための鍵は、本来デジサートやグローバルサインなどの認証局にお金を払って発行してもらうのですが、自分で作ることも可能です。自分で作る分には無料で作れます。通信の暗号化も可能です。
では、なぜわざわざお金を払って鍵を発行してもらうことがあるのか…?
それは、SSLによる認証では通信の暗号化だけでなく、発信者の身分証明(実在証明)の役割も兼ねているからです。暗号化に使う鍵にデジタル証明書による署名を行い、発信者の身分を証明します。
犬や猫は血統書が、絵画や骨董品は鑑定書があった方が信頼できますよね?あれと同じで、鍵に対し、認証局が「この鍵は○○さんのものですよ」ということを証明してくれるわけです。
このデジタル証明書は公開鍵とセットで扱われるので、公開鍵の中にデジタル証明書が組み込まれる形になります。当然、この署名も暗号化されて組み込まれるので、鍵の偽装は困難です。
暗号化通信を行っている場合、アドレスバーに鍵のマークが表示されます。
昔はアドレスバーが緑になる場合もあったりしましたが、今はそういうのはないみたいですね。
暗号化鍵の自己発行
企業などでは信頼性が重要なので、認証局を使って身分の証明を行いますが、自分しか使わないような自宅サーバの場合、暗号化を主な用途とする場合、自前の認証局で十分役割を果たすので、今回は自前で準備したいと思います。
デジタル証明書および鍵の生成
それでは早速暗号化鍵を生成します。ファイル名は自由に設定してください。
まずは秘密鍵(server.key)です。
途中、パスフレーズの入力を求められるので、自由に設定してください。ただし、後で削除してしまうため、簡単なものでも結構です(暗号化の強度には影響ありません)。
[root@co5 ~]# cd /etc/pki/tls/certs/
[root@co5 certs]# openssl genrsa -aes128 2048 > server.key
Generating RSA private key, 2048 bit long modulus ........................................+++ ..........+++ e is 65537 (0x10001) Enter pass phrase:[パスフレーズ] Verifying - Enter pass phrase:[再入力]
このままでは暗号化通信を行う度に、先に設定したパスフレーズを入力する必要があります。これは面倒なので、暗号化キーからパスフレーズを削除し、入力を省きます。
[root@co5 certs]# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:[パスフレーズ]
writing RSA key
続いて公開鍵(server.csr)を作成しましょう。
[root@co5 certs]# openssl req -utf8 -new -key server.key -out server.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) [XX]: JP State or Province Name (full name) []: Nagano ※都道府県 Locality Name (eg, city) [Default City]: Suwa ※市町村 Organization Name (eg, company) [Default Company Ltd]: mhserv.info ※組織名 Organizational Unit Name (eg, section) []: [Enter] ※部門名 Common Name (eg, your name or your server's hostname) []: mhserv.info ※ドメイン Email Address []: [Enter] ※メールアドレス Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: [Enter] An optional company name []: [Enter]
更にデジタル証明書(server.crt)を作成しましょう。
[root@co5 certs]# openssl x509 -in server.csr -out server.crt -req -signkey server.key
Certificate request self-signature ok subject=C = JP, ST = 都道府県, L = 市町村, O = 組織名, OU = 部署名, CN = ドメイン, emailAddress = メールアドレス
最後にパーミッションの設定をして、暗号化キーの生成は完了です。
[root@co5 certs]# chmod 400 server.*
[root@co5 certs]# ls -l
合計 1992 -rw-r--r-- 1 root root 2292 5月 31 2016 Makefile -rw-r--r-- 1 root root 987806 5月 31 2016 ca-bundle.crt -rw-r--r-- 1 root root 987806 5月 31 2016 ca-bundle.crt.rpmnew -rwxr-xr-x 1 root root 610 5月 31 2016 make-dummy-cert -r-------- 1 root root 1273 1月 18 16:49 server.crt -r-------- 1 root root 1041 1月 18 16:46 server.csr -r-------- 1 root root 1679 1月 18 16:44 server.key
[root@co5 certs]# cd
参考にしたサイト様
CentOSで自宅サーバー構築 - Webサーバー間通信内容暗号化(Apache+mod_SSL)
今回新しく登場したコマンド
- openssl
[広告]
トップページ
CentOS 5
○準備
○仮想化準備(VMware)
○仮想化準備(Hyper-V)
○仮想化準備(Proxmox)
○基本操作
○導入
○セキュリティ対策
○Dynamic DNS
○NTPサーバ
○データベース
○WEBサーバ
○FTPサーバ
○メールサーバ
○DNSサーバ
○ファイルサーバ
○その他