RSA暗号、Opensslを使ったSSl証明書の発行、san証明書の発行方法、nginxでの設定方法

この記事の流れ opensslで秘密鍵を発行してみる 秘密鍵の中身を見る RSA暗号の解説。証明。 rsa暗号でサーバ証明書を発行するまで SAN付きのサーバ証明書の作り方 lets encryptでsan付きのサーバ証明書が作れるか そもそもsslサーバ証明書とは? 「サーバー証明書」とは、「通信の暗号化」「Webサイトの運営者・運営組織の実在証明」の2つの役割をもつ電子証明書です。 です。つまり、証明書には、暗号化用の鍵+証明書が入っている、ということになる。いいですね。 秘密鍵の中身をのぞいてみる。 秘密鍵の作成 $ sudo mkdir /etc/nginx/ssl $ sudo openssl genrsa -out /etc/nginx/ssl/server.key 512 秘密鍵を作っているけど、公開鍵はどこにあるのか??というのが非常に気になります。ていうか秘密鍵が因数分解されたものなんだっけ? だからいいのか。掛け算したら一瞬でわかるって話か。おけ。ってことでさ、適当に鍵を一つ作ってみたんだよ。 ちなみに、512bitより短い鍵は作れません。これすごいよね。 -----BEGIN PRIVATE KEY----- MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEA4dNuxX/SzX3wEhde FmNFXLWlNkbGq4xaU6CfKy2nI9K+SWSKueJWSjoanmEG1eb6cXozmAk4eiuKm7zv +FdQowIDAQABAkB+1CdnRoXXIT7eej8+ZZyEGARkulVD7XyhcRlTv70aMWjC29cG 1LIeSScmy5ChqoGwH9Ow/BRzZXax3yeqMQFJAiEA9m+ardfTOK/xVoSn3I5pkzoR prW2xLQi0IDsv5lEu3UCIQDqlxAo6aDT0KpBBe5HbxBgw7uf34G+m7LJs/JnoMYQ twIgALXvr0KpFEfFnWdCiKtMeKU5Oc7aWRTf6NQGWsMZZKUCIFxk6wRyH9nNEYFS qKqR3818yeUJzrwX7q7qpMqT0+65AiEAqWRxDU6t8ZjPmJd6B7w481FuwrFmF9cq mq+QXX8gjRw= -----END PRIVATE KEY----- echo "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEA4dNuxX/SzX3wEhde FmNFXLWlNkbGq4xaU6CfKy2nI9K+SWSKueJWSjoanmEG1eb6cXozmAk4eiuKm7zv +FdQowIDAQABAkB+1CdnRoXXIT7eej8+ZZyEGARkulVD7XyhcRlTv70aMWjC29cG 1LIeSScmy5ChqoGwH9Ow/BRzZXax3yeqMQFJAiEA9m+ardfTOK/xVoSn3I5pkzoR prW2xLQi0IDsv5lEu3UCIQDqlxAo6aDT0KpBBe5HbxBgw7uf34G+m7LJs/JnoMYQ twIgALXvr0KpFEfFnWdCiKtMeKU5Oc7aWRTf6NQGWsMZZKUCIFxk6wRyH9nNEYFS qKqR3818yeUJzrwX7q7qpMqT0+65AiEAqWRxDU6t8ZjPmJd6B7w481FuwrFmF9cq mq+QXX8gjRw=" | base64 --decode これでデコードしてもバイナリだからなんもわからんわ。 いかのスクリプトでデコードできるみたい。 from Crypto.PublicKey import RSA # Load the private key with open("private_key.pem", "r") as file: private_key = file.read() # Parse the private key key = RSA.import_key(private_key) # Extract the components n = key.n # Modulus e = key.e # Public exponent d = key.d # Private exponent p = key.p # Prime 1 q = key.q # Prime 2 print(f"Modulus (n): {n}") print(f"Public exponent (e): {e}") print(f"Private exponent (d): {d}") print(f"Prime 1 (p): {p}") print(f"Prime 2 (q): {q}") Modulus (n): 11827462552050103756019456673259686146276364164688350469602565108471900615793415256864500417710852720839063036792768824435280979352135219586691204539437219 Public exponent (e): 65537 Private exponent (d): 6642559381010851411383007183311248119169234719466623674178885422700539328402280041863549141435055457596044186231508711647457747564061370576607226853654857 Prime 1 (p): 111466148331411145531384799415569793304697439187343498431136600736302912289653 Prime 2 (q): 106108112006209210762976910352826494821357000184205525073929931397132009738423 ということですね。はい。 はい、でさ、RSA暗号の仕組みも今勉強してしまいましょうか。 ...

September 17, 2024 · 3 min · 619 words · Me