Contents
HTTPSとは
一般的にお問い合わせフォームなど個人情報を入力するような画面はHTTPSにすることが一般的です。
詳細な説明は参考リンクが丁寧なんですが、要約すると
- HTTPでの通信のやり取りは外部からやりとりが見えてしまい、なりすましや改ざんがあるので暗号化するしくみが必要
- その暗号化を実現する方法がHTTPSであり、これを実装するには認証局への申請が必要
- 単純に暗号化を防ぐ以外にもサイト自体の信頼性(実在している会社であるなど)を高めるという意味合いもHTTPSにはある
- そのためGoogleからの信頼性アップにもつながり、検索順位の向上にもつながる
- 認証局への登録費用は年間数千円から十万以上を超えるもある(費用の違いは主に信頼度の違い。市が認定しているか、国が認定しているかみたいなそういうニュアンスだと思います。)
といった感じでしょうか。
概要説明
SSL費用の違いについて
SSLは無料と有料で何が違うの!?今さら聞けないSSLの仕組みと導入のメリット
オレオレSSL
ただ、社内だけで使う場合のサイトなどでどうしても一時的にHTTPSを使いたいというケースもあるかと思います。
その場合、自分自身を認証局とみたてて、HTTPSにすることができます。これをオレオレSSLなどといったりするようです。
※もちろんリスクもありますので、限定的な使い方でのみになります。実際にオレオレSSLを使っても信頼度は低いため、安全な接続ではありません、というメッセージがでます。
以下その方法について書きます。
前提条件として公開鍵の仕組みなどを簡単にしっておいたほうがよいでしょう。
秘密鍵作成コマンド
OpenSSLを使って秘密鍵を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#単純に秘密鍵をつくるだけなら以下だけです。 openssl genrsa > server.key #実際に開くことができます。 vim server.key #-----BEGIN RSA PRIVATE KEY----- #わけわからん文字列がいっぱい #-----END RSA PRIVATE KEY----- #また openssl rsa -text < server.key #で鍵の詳細な情報がわかります #数字を指定することで鍵長(セキュリティ強度が高まった)秘密鍵が作れます openssl genrsa 2024 > server.key #パスワードつきのものもつくれます。 #aes256 は暗号化の方式 DES, DES3, AES128, AES192, AES256 などが一般的 openssl genrsa -aes256 2024 > server.key #パスワードと再確認のパスワードが必要です。 #内部の文字列が長くなっているのがわかるかと思います。 #パスワード時は内容を読み込むときにもパスワードが必要になります。 |
公開鍵作成コマンド
1 2 3 4 5 6 |
#公開鍵作成 openssl rsa -pubout <秘密鍵のファイル名> pub.key #<>も必要な文字列です。 #情報の確認 openssl rsa -text -pubin < pub.key |
オレオレSSL証明書の作成
1 2 3 4 5 6 7 |
#reqコマンドで申請書みたいなものを作ります。 openssl req -new -key server.key > server.csr #いろいろな情報が聞かれますが、オレオレSSLではすべてEnterでも通ります。 #サーバー証明書の作成 <>も必要な文字列になります。 #3650は有効期限の日数になります。 openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt |
SSL – セルフ認証(初心者がさくらのVPSを立ち上げるまで – その12)
WEB ARCH LABO OpenSSL で RSA の秘密鍵を作成する方法
WEB ARCH LABO OpenSSL で RSA の公開鍵を作成する方法
WEB ARCH LABO OpenSSL で SSL 自己証明書を発行する手順
webサーバーへの登録
作業が完成したらwebサーバーに秘密鍵とサーバー証明書を登録します。
※ここではnginxを例に出します。
1 2 3 4 5 6 |
server { listen 443 default ssl; ssl on; ssl_certificate サーバー証明書のパス; ssl_certificate_key 秘密鍵のパス; server_name localhost; |
これでservice nginx restartでOKかと思います。
Portなどが競合して失敗することもありますのでその場合は以下のコマンドで抽出しましょう。
1 |
lsof -i:443 |
特定のポートをリッスンしているプロセスを調べる
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
[…] SSLに関して(主にオレオレSSLの作成方法など) […]