3
2

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.

Symbol-bootstrapのHTTPS対応をhttps-portalを使用しない方式へ修正

Last updated at Posted at 2022-01-29

Symbol-bootstrap(以下、「bootstrap」とします。)とhttps-portalを使ってノードのHTTPS化をしていましたが、bootstrap側でHTTPS対応してくれたため、https-portalを使用しないように環境を修正しました。

もともとhttps-portalはLet's Encryptの証明書を使用していて、bootstrapも同様の対応が可能です。

  • 前提とする環境

Symbol-bootstrap:1.1.3

  • 通信要件

インターネットからノードに対して以下のポート宛ての通信が許可されている必要があります。
TCP80
TCP3001
※https-portalでHTTPS化している環境であれば、この通信はすでに許可されていると思います。

  • カスタムプリセットファイルの編集

bootstrap側でHTTPSを有効にするためカスタムプリセットファイル(my-preset.ymlなど)を編集して、以下のセクションを追加します。

my-preset.yml
httpsProxies:
    -
        excludeDockerService: false
  • bootstrapの再起動

あとはこんな感じでbootstrapを再起動して動作確認。
symbol-bootstrap stop
symbol-bootstrap start -p mainnet -a dual -c my-preset.yml --upgrade

docker pshttps-proxyというコンテナが立ち上がっていることが確認できると思います。

  • 証明書の準備が整うまで待つ

bootstrapが起動した後、初回は証明書発行のプロセスが自動的に動くのでしばし待ちます。
そのうち、以下のようなメッセージがでればHTTPS通信が可能になります。

https-proxy     | Certificate signed!
https-proxy     | Signed certificate for <ノードのドメイン>
https-proxy     | [cont-init.d] 20-setup: exited 0.
https-proxy     | [cont-init.d] 30-set-docker-gen-status: executing...
https-proxy     | [cont-init.d] 30-set-docker-gen-status: exited 0.
https-proxy     | [cont-init.d] done.
https-proxy     | [services.d] starting services
https-proxy     | [services.d] done.

https-proxyのログは以下のコマンドでも確認できます。
journalctl -f CONTAINER_NAME=https-portal

  • https-portalの後処理

私のノードではhttps-portalをサービス化していたので、後処理でサービスの削除などを行いました。

systemctl disable https-portal
systemctl disable https-portal
rm /etc/systemd/system/https-portal
systemctl daemon-reload
systemctl reset-failed
  • 証明書の更新

証明書の更新は以下のコマンドでできます。
symbol-bootstrap renewCertificates
※パスワード入力が必要です。

試しにやってみましたが、まだ期間が残っているので更新は不要な旨のレスポンスでした。
なお、更新は証明書の期限の30日前から可能になります。
強制的に更新するオプションに--forceがありますが、試していません。

$ symbol-bootstrap renewCertificates
                         _             _         _                    _         _
  ___  _   _  _ __ ___  | |__    ___  | |       | |__    ___    ___  | |_  ___ | |_  _ __  __ _  _ __
 / __|| | | || '_ ` _ \ | '_ \  / _ \ | | _____ | '_ \  / _ \  / _ \ | __|/ __|| __|| '__|/ _` || '_ \
 \__ \| |_| || | | | | || |_) || (_) || ||_____|| |_) || (_) || (_) || |_ \__ \| |_ | |  | (_| || |_) |
 |___/ \__, ||_| |_| |_||_.__/  \___/ |_|       |_.__/  \___/  \___/  \__||___/ \__||_|   \__,_|| .__/
       |___/                                                                                    |_|
? Enter the password used to encrypt and decrypt custom presets, addresses.yml, and preset.yml files. When providing
a password, private keys will be encrypted. Keep this password in a secure place! ****************
2022-01-29T08:00:02.579Z info     Password has been provided
2022-01-29T08:00:02.630Z info     Generating config from preset 'mainnet'
2022-01-29T08:00:02.631Z info     Using assembly 'dual'
2022-01-29T08:00:02.911Z info     User for docker resolved: 1001:1001
2022-01-29T08:00:02.911Z info     Running image using Exec: symbolplatform/symbol-server:gcc-10-1.0.3.1 openssl x509 -enddate -noout -in node.crt.pem -checkend 2592000
2022-01-29T08:00:03.747Z info     The node.crt.pem certificate for node node will expire on Apr 12 14:53:56 2022 GMT. No need to renew it yet.
2022-01-29T08:00:03.747Z info
2022-01-29T08:00:03.748Z info     The SSL certificates are up-to-date. There is nothing to upgrade.
2022-01-29T08:00:03.748Z info
  • 参考

カスタムプリセットの参考

カスタムプリセットの参考

symbol-bootstrap renewCertificatesの参考

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?