0
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 3 years have passed since last update.

nginx で ECDSA で オレオレSSL証明書

Last updated at Posted at 2020-11-18

はじめに

RSA じゃなくて ECDSA で作るところが拘り。
はりきって ECDSA 521bit で鍵を生成して設定しようとしてドハマリした。

384bitで生成しよう

521bit だとブラウザが対応していなくて ERR_SSL_VERSION_OR_CIPHER_MISMATCH とか言われると思います。

nginx の設定

server {
    listen 443 ssl;
    server_name _;

    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_certificate     /etc/nginx/server.crt;
    ssl_certificate_key /etc/nginx/server.key;
    ssl_session_timeout 1d;
    ssl_session_cache   shared:SSL:50m;
    ssl_ecdh_curve      secp384r1;
}

各種生成コマンド

登場人物の整理

  • 秘密鍵
  • *.key *.pem
  • 証明書署名要求(公開鍵)
  • *.csr
  • サーバ証明書
  • *.crt *.cer

順に生成していく。

秘密鍵

今回は ECDSA 384bit な鍵を生成する。

# openssl ecparam -name secp384r1 -genkey -out server.key

使用できる楕円曲線の一覧は openssl ecparam -list_curves で確認ができる。
( 実際に使用されるのは prime256v1, secp384r1 辺り )

証明書署名要求

# openssl req -new -sha256 -key server.key -out server.csr

サーバ証明書

# openssl x509 -days 36500 -req -signkey server.key < server.csr > server.crt

各種確認コマンド

秘密鍵の確認

$ openssl ecparam -text -noout -in server.key

証明書署名要求の確認

$ openssl req -text -noout -in server.csr

サーバ証明書の確認

$ openssl x509 -text -noout -in server.crt

参考

0
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
0
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?