タグ: SSL

homebrewを用いないUbuntuへのmkcertのインストール。

前回、homebrewによるローカル証明書(mkcert)を見つけましたが、それよりも楽な方法がありましたので、メモとして残します。

actix-webでSSL/TLS通信をしてみたよ

https://qiita.com/yoshiyasu1111/items/f22a5fb640651fd22b6c

環境はUbuntu20.04です。

必要パッケージをインストール

apt install libnss3-tools

インストール

curl -s https://api.github.com/repos/FiloSottile/mkcert/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi - \
    && mv mkcert-v*-linux-amd64 mkcert \
    && chmod a+x mkcert \
    && mv mkcert /usr/local/bin/

ローカル認証局作成

 mkcert -install

これにより、管理者ユーザでもmkcertコマンドを使えるようになったのが大きいです。

ローカルredmineのSSL化。-ローカル証明書のインストールと常時SSL化-

この記事の続きです。

ここでは、mkcertで作成したローカル証明書をredmineサーバに入れておきます。

また、

  • httpを強制的にhttpsにリダイレクト
  • http://ip or DNS名 のアクセスをhttps://ip or DNS名/redmineへとリダイレクトする

設定も同時に入れ込みます。

redmineサーバ上での設定

必要なモジュールの有効化

a2enmod ssl
a2enmod rewrite
systemctl restart apache2
ss -lntp
# 443ポートがLISTENされていることを確認します

証明書ペアの格納

mkdir /etc/certs/
mkdir /etc/private/

その後、

/etc/certs → SSL証明書

  • corn.wall.crt.202204

/etc/private/ → 秘密鍵

  • corn.wall.key.202204

をそれぞれ格納します。

証明書ペアのシンボリックリンク化

後々のメンテナンスを考えて、証明書をシンボリックリンク化します。

cd /etc/certs/
ln -s corn.wall.crt.202204  corn.wall.crt
cd /etc/private/
ln -s corn.wall.key.202204 corn.wall.key

Virtualファイル記載

cd /etc/apahce2/site-available/
cp -pi redmine.conf /path/to/backup/redmine.conf.org
vi redmine.conf
redmine.confの内容
<VirtualHost _default_:80>
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
        #http通信を強制的にhttpsにリダイレクト
</VirtualHost>

<VirtualHost _default_:443>
  SSLEngine on
    SSLProtocol All -SSLv2 -SSLv3  -TLSv1
    SSLCertificateFile /etc/certs/corn.wall.crt
    # 証明書
    SSLCertificateKeyFile /etc/private/corn.wall.key
    # 秘密鍵

        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^penzance\.corn\.wall
        RewriteRule ^/$ https://penzance.corn.wall/redmine/ [R]
        # https://penzance.corn.wallへのアクセスをhttps://penzance.corn.wall/redmine/にリダイレクト

Alias /redmine /var/lib/redmine/public
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
</Location>

</VirtualHost>

設定反映

apache2ctl configtest
# SyntaxOKを確認
systemctl restart apache2

再起動後、

  • redmineの通信がhttpsで行えること
  • ホスト名でアクセスしても/redmine/に移動すること

を確認しました。

補足とまとめ

  • セキュリティソフトによっては、このローカル認証局を「信頼できない」としてブロックする場合があります。その時はその設定を解除します。
  • また、mkcertsは開発用途なので外に出ていけないローカル環境での運用が前提です。
  • そのためか証明書の有効期限は3ヶ月。この運用をもっと楽にするのが今後の目標です

ローカルredmineのSSL化。-mkcertのインストール-

また、やりたいことに一歩近づきました。

  • 外に出ていけないローカルドメインでもSSL通信はしたい
  • 自己証明書と違った形でSSLを発行したい

という希望を求めていたら、「mkcert」なるものを発見したので、導入してみました。

redmineのSSL化

homebrewのインストール(検証機で実施する)

参考:
https://tdomy.com/2021/12/how-to-install-homebrew-on-ubuntu/

必要パッケージ取得

rootでは実行しないこと

sudo aptitude install libnss3-tools git curl

homebrewインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
test -r ~/.bash_profile && echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >>~/.bash_profile
echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >>~/.profile
brew --version
brew install hello
hello
brew uninstall hello

mkcertインストール

https://www.hivelocity.co.jp/blog/46149/

brew install mkcert
mkcert -install
mkcert -CAROOT
# ~/.local/share/mkcert配下にルート証明書とルート秘密鍵を確認
cd ~/.local/share/mkcert

mkcertで証明書発行

ここでは、自宅redmineに用いている

penzance.corn.wall

の証明書を発行します。

mkcert -key-file corn.wall.key.202204 -cert-file corn.wall.crt.202204 corn.wall penzance.corn.wall "*.corn.wall" 
openssl x509 -text -noout -in ./corn.wall.crt.202204 |grep DNS
# DNS:corn.wall, DNS:penzance.corn.wall, DNS:*.corn.wall と、入力したDNS名があることを確認します

次のエントリーでは、redmineにSSLを入れ込んでいきます。

Powered by WordPress & Theme by Anders Norén