# HTTPS 参考:[[https://www.rem-system.com/cent-httpd-ssl/|CentOS 7とApacheをインストールした環境にLet's EncryptでHTTPSを設定 - レムシステム エンジニアブログ]] ### 環境設定 ##### ファイアフォールの設定 ** firewall-cmd --list-all ** で「https」が許可されていない場合、下記のコマンドを実行する。 ``` $ sudo firewall-cmd --add-service=https --permanent success $ sudo firewall-cmd --reload success ``` ##### mod_ssl パッケージのインストール ``` $ sudo yum install mod_ssl ``` ##### certbot パッケージのインストール ``` $ sudo yum install certbot python2-certbot-apache ``` ※ EPELレポジトリがインストールされている必要がある。 ### ドメインの取得 ##### Freenom を利用したドメイン取得 取得サイト:[[http://www.freenom.com/en/index.html|Freenom - A Name for Everyone]] 基本的には下記のサイトを参考に、取得したい文字列のドメインで登録する。 [[https://www.lancork.net/2019/05/how-to-use-freenom-free-domain/|完全無料の独自ドメインを取得できるFreenomの使い方]] この際に、下記2点に注意する。 - 取得したいドメインを検索する際には「xxx.tk」のようにトップレベルドメインまで指定して検索する - 登録する際は、アカウントの電話番号が使われている携帯のモバイル通信を使用して操作を行う。(登録完了後はWi-fiでOK) ##### A(Addresss)レコードの設定 Freenom の「ターゲット」にドメインと紐づけしたいIPアドレスを入力する。 設定したアドレスがグローバルIPアドレスであれば、設定後、ブラウザにドメインを入力してアクセスできるようになる。 ローカルネットワーク内の機器のIPアドレス(192.168.xxx.xxx)を割り当てた場合、次の手順が必要となる。 ##### hostファイルの設定(Windows) hostファイルを設定し、登録したドメインと紐づけを行う。 エクスプローラのパス入力欄に「C:\Windows\System32\drivers\etc」を入力する。 フォルダ内の「host」ファイルのバックアップファイルを作成する。(「host.org」等の名前で) hostファイルに下記を入力して、上書き保存する。 ``` <登録したドメイン> ``` 設定後、ブラウザにドメインを入力して、期待のページが表示されていればOK ### 証明書の発行 参考: - [[https://scrapbox.io/nwtgck/127.0.0.1%E3%81%ABLet'_Encrypt%E3%81%A7%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E7%99%BA%E8%A1%8C%E3%81%97%E3%81%A6https%E3%81%A7%E3%81%AE%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E9%96%8B%E7%99%BA%E3%81%A8%E6%9C%AC%E7%95%AA%E3%81%AE%E5%B7%AE%E7%95%B0%E3%82%92%E4%BD%8E%E6%B8%9B%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AA%E6%89%8B%E9%A0%86|127.0.0.1にLet' Encryptで証明書を発行してhttpsでのローカル開発と本番の差異を低減するための具体的な手順]] - [[https://numb86-tech.hatenablog.com/entry/2020/08/04/223754|Let's Encrypt と Route 53 でローカル開発環境を HTTPS 化する - 30歳からのプログラミング]] - [[https://qiita.com/gbgb-ojisan/items/be8a35270a84b6b7ca2e|Let's EncryptのDNS-01チャレンジでのSSL証明書更新(手動) - Qiita]] ##### certbot コマンドの実行 ``` $ sudo certbot certonly --manual --preferred-challenges dns -d <ドメイン名> ``` 実行すると、メールアドレスの入力や、同意等の質問があるので、回答する。 回答後、以下のメッセージが表示される。 ``` Please deploy a DNS TXT record under the name _acme-challenge.<登録ドメイン> with the following value: xxx(数十個の文字数) Before continuing, verify the record is deployed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue ``` Freenom に下記のレコード登録を行う。 ^ Name ^ Type ^ TTL ^ Target ^ | _acme-challenge.<登録ドメイン> | TXT | 300 | <表示文字列> | 保存後、反映には時間がかかる。反映されたかどうかを確認するには、下記のコマンドを実行する。 ``` $ sudo dig @80.80.80.80 -t TXT _acme-challenge.<登録ドメイン> ``` 上記コマンド実行し、「ANSWER SECTION」が表示されれば、certbotコマンドの「Enter」キーを押下する。 最後に、「ongratulations! Your certificate and chain have been saved at」が表示されればOK ### Apache の設定 ##### ssl.conf のコピー 下記のコマンドを実行し、「/etc/httpd/conf.d/ssl.conf」のバックアップファイルを作成する。 ``` $ sudo cp /etc/httpd/conf.d/ssl.conf{,.org} ``` ##### ssl.conf の編集 下記の項目を編集する。 ``` SSLCertificateFile /etc/pki/tls/certs/localhost.crt ↓ SSLCertificateFile /etc/letsencrypt/live/<ドメイン>/cert.pem SSLCertificateKeyFile /etc/pki/tls/private/localhost.key ↓ SSLCertificateKeyFile /etc/letsencrypt/live/<ドメイン>/privkey.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.testdom.com/privkey.pem    ↓ SSLCertificateChainFile /etc/letsencrypt/live/<ドメイン>/chain.pem ``` 編集後、下記のコマンドを実行し、「Syntax OK」が表示されればOK ``` $ sudo httpd -t ``` ##### httpd の再起動 ``` $ sudo systemctl restart httpd ``` 以上で、https化の設定が終わり。ブラウザにアクセスすると、URL欄が鍵マークになっていることを確認する。