なお、squidでオレオレHTTPSプロキシを立てた記事は以下です。
SquidでBasic認証つきオレオレHTTPSプロキシ立てる
準備
あらかじめ、どこかしらでドメイン名を取得してきます。ここでは mydomain.piyo
とします。
また、ドメイン名で名前解決できるように、ネームサーバーとかDNSレコードをちゃんとしておきます。
Certbotクライアントをダウンロード
以下サイト様の手順に従って行います。Amazon LinuxはRHEL 6ベースなので、『CentOS 6 / RHEL 6』の手順です。
Let's Encrypt の使い方 - Let's Encrypt 総合ポータル
EPELを有効にします。
Certbotクライアントをダウンロードして、全ユーザーで実行可能な権限を与えておきます。
certbot-auto 実行
次の記事を参考にさせていただきました。
Let's Encrypt で Nginx にSSLを設定する - Qiita
Let's Encryptを利用してApache 2.4サーバをHTTPS化する - Qiita
certbot-auto
を実行していきます。
Apacheが動いてるサーバーなら ./certbot-auto
で起動すればインタラクティブに証明書発行→設定までやってくれますが、今回はApacheで使うわけではないので、certonly
をつけて証明書の発行だけ行います。
また、Amazon Linuxではオプション --debug
をつけないと動きません。つけましょう。
起動すると、以下のように色々聞かれます。
認証方法
Webサーバーではないので 1 (standalone) を選択しました。
standaloneでは一時的にWebサーバーが上がるので、ポート80と443あたりが空いてないとダメらしいです。
なお、Apacheが入ってると 1: Apache Web Server plugin (apache)
が、Nginxが入ってると 1: Nginx Web Server plugin (nginx)
が出てきました。その場合はstandaloneの番号が違うかもしれません。
メールアドレス
期限切れとセキュリティのお知らせを受け取るためのものなので、入力しないと進めません。
規約
同意して A を入力します。
メルマガ
Certbotの開発をしてるElectronic Frontierというとこにメールアドレスを共有してよいか聞かれてます。
いるなら Y、いらなければ N を入力します。
ドメイン名
あらかじめ用意しておいたドメイン名を入力します。ドメイン名が無いとLet's Encryptできません。
もし何かのエラーが出たら、当ブログの以下記事を参照してみてください。
Amazon EC2でLet's Encryptするときに出たエラーと対処法 - キリウ君が読まないノート
正常に完了すると、以下のようなメッセージが表示されます。
これで、
/etc/letsencrypt/live/mydomain.piyo/cert.pem
にサーバー証明書
/etc/letsencrypt/live/mydomain.piyo/chain.pem
に中間CA証明書
/etc/letsencrypt/live/mydomain.piyo/fullchain.pem
にサーバー証明書と中間CA証明書がくっついたもの
/etc/letsencrypt/live/mydomain.piyo/privkey.pem
に秘密鍵
が作成されました。
Squidに証明書設定
HTTPSプロキシなら、すでにsquidの設定ファイルで https_port
を設定してると思います。
作成した証明書と秘密鍵のパスで cert
と key
を書き換えます。
終わったらサービス再起動します。
動作確認
ここではプロキシのポートは 8081
とします。
cURLでプロキシ挿してどこかにアクセスしてみます。
オレオレ証明書ではないので、オプション --proxy-insecure
をつけなくてもアクセスできるはずです。