はじめに
SSLを導入したのでメモ程度に残します。
また、フロントサーバのポートを4200から80に変更しました。
4200はangularのローカルサーバのportなのでどうにか変更できないかと思っていました。
フロントサーバ(httpd)
①sslのプラグインをインストール
# yum install mod_ssl
②webサーバを再起動する
# systemctl restart httpd
③mod_sslがインストールされていることを確認する
httpd -M
④https用のportを開放する
# firewall-cmd --add-service=https --zone=public --permanent
⑤firewalldを再起動する
systemctl restart firewalld
⑥serviceにhttpsが追加されていることを確認する
# firewall-cmd --list-all
⑦Let’s Encryptのインストール
# yum install certbot python2-certbot-apache
⑧証明書の取得(example.comは自分のドメインにしてください)
# certbot --apache -d example.com
※基本的に全部「y」で進めて大丈夫です。
以下のようなエラーが出た場合は、
Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain.
Please add a virtual host for port 80.
vim /etc/httpd/conf/httpd.conf
※example.comは自分のドメインにしてください。
DocumentRootはフロントのsrcの場所です。
httpd.confの一番最後に記載してください。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin root@example.com
DocumentRoot /var/www/html
ServerName example.com
</VirtualHost>
文法チェックを行って
httpd -t
問題がなければ、webサーバを再起動してください。
# systemctl restart httpd
※以下の2つのファイルがキーになります。
/etc/httpd/conf
・httpd-le-ssl.conf
・httpd.conf
↓こんな感じです、443がhttpsのportだということですね。
pemが拡張子のファイルはそれぞれ秘密鍵やら、証明書の類です。
うまくいかない場合は、パスが間違っているかもしれません。
いずれにしてもhttpd-le-ssl.confかhttpd.confをいじれば治ったので、参考に。。
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin root@example.com
DocumentRoot /var/www/html
ServerName example.com
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
</VirtualHost>
</IfModule>
バックエンドサーバ(spring boot)
①pkcs#12ファイルというものを作成します
$openssl pkcs12 -export -in fullchain.pem \
-inkey privkey.pem \
-out keystore.p12 -name \
Tomcat -CAfile \
chain.pem -caname root \
②上記のコマンドを実行してenterを押すと、パスワードを要求されるので入力します。
このパスワードはapplication.propertiesに記載するものなので、メモをしておいてください。
③keystore.p12というファイルが作成されるので、springプロジェクトのresource直下に置きます。
④application.propertiesを設定します。(passwordは先ほど設定したパスワードを入力する)
server.port = 443
server.ssl.enabled=true
server.ssl.keyAlias=tomcat
server.ssl.key-store=classpath:keystore.p12
server.ssl.protocol=TLSv1.2
server.ssl.key-store-password=password
server.ssl.keyStoreType=PKCS12
以上で終了です。
http⇒httpsになったので、URLの設定箇所の修正が発生すると思いますが、
焦らず、デベロッパーツールやこれまで設定したファイルを見直しましょう。
※websocket(ws⇒wss)
フロントサーバのport変更について
40行目ですかね、、(私のファイルでは42行目でした。)
今まで4200でしたが、80に変更しました。
なので、https://ドメイン:4200
ではなく、https://ドメイン/
でアクセスできるようになり、port番号は省略できるようになりました。
Listen 80
最後に
今回も一筋縄ではいきませんでしたが、最終的にはできました。
あきらめないことが重要です。原因はどこかあります。
何度も試すことになりますが、着実に答えには近づくのであきらめないでやり切りましょう。