OpenSSLで100年有効な鍵を作る
#!/bin/sh
set -eux
SUBJECT="/C=JP/OU=my-localhost"
# server.key
openssl genrsa -out server.key 3072
# server.csr
openssl req -new -key server.key -subj "${SUBJECT}" > server.csr
# server.crt
echo "subjectAltName = DNS:localhost, IP:127.0.0.1" > SAN.txt
openssl x509 -in server.csr -days 36500 -req -extfile SAN.txt -signkey server.key > server.crt
# server.der : 信頼されたルート証明機関用。ブラウザエラー回避に必要。
openssl x509 -inform PEM -outform DER -in server.crt -out server.der
# CSRは不要なため削除
rm -f server.csr
以下のように保存。(nginxのダウンロードは後述)
信頼されたルート証明機関 にインポート
-
server.der
をダブルクリックしインポート
-
信頼されたルート証明機関
での表示名を変更したい場合は、my-localhost
の箇所を変更のこと。
stone.exe
https://localhost にアクセスすると http://localhost のページが表示される例
公式HPの配布分だとTLS1.0
までしか対応していない。
TLS1.2
で動作するにはtakuya-o/stoneさんのstone24LB.zip
を使わせていただきました。おのたく日記(2017-08-24) その他ログ
また、動作にはVisual Studio 2015 の Visual C++ 再頒布可能パッケージ
の x86版のインストールが必要。(Windowsが64bit版でも。)
stone.exe -z key=server.key -z cert=server.crt localhost:80 443/ssl
出力を抑止したい場合は > nul
をつけるとよい。
nginx
ダウンロード、解凍
conf/nginx.conf
conf/nginx.conf
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# HTTPS server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate ../_cert/server.crt;
ssl_certificate_key ../_cert/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
}
接続確認
- http://localhost:443 にアクセスし表示できることを確認。
nginx.exe を終了させるのに便利なコマンド
taskkill /im nginx.exe /f
mkcertの例 (こちらは有効期限2年ちょい)
apt install -y libnss3-tools
wget "https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64" \
-O mkcert
chmod +x mkcert
./mkcert -install
cp ~/.local/share/mkcert/rootCA.pem rootCA.crt
./mkcert localhost
mv localhost-key.pem server.key
mv localhost.pem server.crt
-
rootCA.crt
をブラウザの信頼されたルート証明機関
に入れる。