2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【サーバ構築】SSL化とwebサーバのportについて

Posted at

はじめに

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の一番最後に記載してください。

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をいじれば治ったので、参考に。。

httpd-le-ssl.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は先ほど設定したパスワードを入力する)

application.properties
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番号は省略できるようになりました。

httpd.conf
Listen 80

最後に

今回も一筋縄ではいきませんでしたが、最終的にはできました。
あきらめないことが重要です。原因はどこかあります。
何度も試すことになりますが、着実に答えには近づくのであきらめないでやり切りましょう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?