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

About_LB

LBのあれこれ 参考文献 https://qiita.com/masaozi3/items/838060d7339aef01bc2e

September 8, 2024 · 1 min · 3 words · Me

インターネットの中心

ネットワークの中心は一体どこなのか? これの答え、ついに具体的にわかったわ。 インターネットの発祥地はアメリカと言うのは有名な話だよね。 あとは、ネットワークのネットワークがインターネット、と言う話も有名な話だよね じゃあ、そのネットワークの中心はどこなのか?と言う話だが。答えは、「Tier 1 Network」に所属するISPだとおもう。詳しく述べよう。 参考文献 cloud flairのBGPの説明 Tier 1にはsoftbankも入っているのか? インターネットのすごくわかりやすい説明 昔の資料。平成15年とかなので2003年とか。まだソフバンが来る前の話 日本のISPの話 日本のISP一覧 asn/ipの取得方法 トランジットとピアリングの話 closネットワークの話もここでしています 回線事業者とISPの関係 学術ネットワークの話 Tier1 ISP はい、Tier1に所属するISPは世界で16個しかないんだよね。 こいつらは、インターネットバックボーンを形成しているISP。 で、インターネットバックボーンの役割は、海底ケーブルなどを介して、大陸間、国家間にまたがって各国の基幹ISPを相互接続して、大容量データの経路を確保することです。つまり、国家間の通信を可能にするためのケーブルを弾いてくれている。 日本の企業でTier1のISPに入っているのは、NTTとソフバンが買収したSprintっていうアメリカの会社。 で次。 日本の一次プロバイダ 宮城さんの話 janogでは、ISPの人たちがピアリングをしましょうとか、そういう交渉の場としても使われる。これはだいぶ面白いね。 また、個人がISPになることもできるって話。これは、AS番号をもらうって話になるのかな?

September 5, 2024 · 1 min · 32 words · Me

2024Sep_TODO

9/28,29でやりたいこと isuconの申し込みをやる。これは明日白木さんに確認を取って確実にやらないといけないこと。 JCで変更履歴を保持するようにしたいんだよね。これ結構データ食うと思うんだけど、実現したいです。 nginxでsanを持った証明書を登録する方法を学ぶ。これね、証明書の発行方法とssl関係を学ぶって話なんだけど、結構難しいぜこれ。 ssl入門みたいな本を読む nginxの監視を完璧にする。mtailを使ってlogも監視するし、その他業務の監視項目全部。そして、通知もやる。ちな、urlは、https://blog.ingenboy.com:8080/。仕事の監視を完全にコピーするって話だ。これできたらもうだいぶ昇給していいレベルだと思うけどね。 echoサーバを建てたいよね。まずはね。クラスタ上にね。ってことでgoで書いたエコー鯖を立てる。k8sにね。これはreal world httpを読めばいいと思うよ。vimを使ってあえてmっけ出していくのもあり。ここでは壊して学ぶk8sを読むのがいいですね。 外からvegetaで負荷をかけ続けられるようにする。 k8sも監視したい。よろピクミンだね。 gslbで二つ作った入口で振り分けられるといいよね。って感じで。 時間が余ったら宅建のお勉強もした方がいいですね。 2024/09/1時点でのタスクリスト 開発関係 会計ソフトを導入する。この辺が良さそう https://ledger-cli.org/ 自宅のK8S上にecho-serverを立てて、proxyを複数立てて、さらにvipを立てて、vegetaで負荷試験ができるようにしたい。そして、様々なメトリクスが取れるようにしたい。どうやるんだろうか。この辺は、壊して学ぶk8s的な本を買ったので、それで勉強しよう。 I and shiraki-san decided to develop GSLB using go lang. It is going to be funny Learn DNS (こっちはかなりいい感じで進んでいる。) –> Done Learn How to write packer parser using Go on TCP Layer. It is also going to be funny. 例の競馬システムを動かす時が来た。自宅のk8sで動かせるようにmanifestファイルを書いてください。よろぴくお願いしますです。 Go言語でdistributed file systemを作ってくれ!このyoutubeを見てでもいいし、goで分散システムを作ろうって入ってきたあの本でもいい。どっちでもいい。ただ、後者だとk8s上に作った分散システムを展開するので、上のやつとも親和性が高い気がしています。はい。 ISUCONの過去問を解きましょう。今年のISUCONにおそらく白木さんと出ることになります。足を引っ張りたくないので頑張ります。 ーー>isucon14の申し込みが始まったという話です。頑張りましょう。 redmineを入れてタスク管理したらおもしろう。いいかもしれない! 宅建の勉強をしよう その他 毎日筋トレしてくれ。ジムに行ってくれ。朝がいい。 毎朝早く起きてくれ。23時に寝て0630に起きる生活ができると最高だ。 早く業務委託で何かしらの案件を取ってきて売れ。 早くyoutubeチャンネル開設して、経費生活を始めてくれ! 長期目線 簿記2級とってくれ! 土地をどこに買うかかんがえてくれ!!そして貯金しろ!!マジな話、生活費8万と、共通貯金口座5万以外は全部あっちに回してくれ。 つまり、月のクレカ支払いに使えるお金は17万ということになる。保険で10マン落とされるので、残り7万か。まあそんなものやろう。

September 4, 2024 · 1 min · 74 words · Me

Booking_scheduling_system

August 27, 2024 · 0 min · 0 words · Me

Vegeta

vegeta使いになろう

August 27, 2024 · 1 min · word · Me

Shell_master

背景 インフラエンジニアは、プロセスのメモリ上で何が起こっているかは実はあまりわからないくていい。それよりも、どうやってプロセスをうまく連携させるか、そういう大局的な視点がどうしても必要になる。 結局プログラムは何かを実現するための道具でしかない。道具を作るのはいいけど、インフラエンジニア版 何がいいたいかというと、道具と道具を組み合わせて何かをするという技を学ぶためには、shellを使えるようにならないとダメだという話だ。 shell芸人になれ。 なんか、すごい人はshellでワンライナーで全部解決していく。マジですごい。 参考文献 1日1問、半年以内に習得シェルワンライナー160本ノック 問題データリポジトリ jqコマンド jqこマンdのについて だいぶ使えるのではないか? $ echo '{"items":[{"item_id":1,"name":"すてきな雑貨","price":2500},{"item_id":2,"name":"格好いい置物","price":4500}]}' \ | jq . echo '{"items":[{"item_id":1,"name":"すてきな雑貨","price":2500},{"item_id":2,"name":"格好いい置物","price":4500}]}' \ | jq .items こちらの結果はこうなります。 [ { "item_id": 1, "name": "すてきな雑貨", "price": 2500 }, { "item_id": 2, "name": "格好いい置物", "price": 4500 } ] 次の例 echo '{"items":[{"item_id":1,"name":"すてきな雑貨","price":2500},{"item_id":2,"name":"格好いい置物","price":4500}]}' \ | jq '.items[].name' こんな感じで出力されます "すてきな雑貨" "格好いい置物" という感じで、ほうほう、jqなかなか便利ではないか??ということですね。頭に入れておきましょう。 sedコマンド selectコマンド trコマンド 文字を置換したり、削除したりできるコマンド こちらをみてみよう 使用例 echo lion | tr lion bear 結果 bear 重複しているとダメらしい、、クソか。 しかしこういう使い方はするって話だ。 hostname | tr -d "\n" date関数のすごい使い方 $ date "+%F" #年月日を出力 2022-02-28 $ date "+%T" #時分秒を出力 22:37:49 $ date '+%Y/%m/%d %H:%M:%S' #年月日と時分秒を出力 2022/02/28 22:40:13 今回はこうやって使われていた。 ...

August 22, 2024 · 1 min · 100 words · Me

Comments_on_tcp_ip_network_commands

TCP/IP & ネットワークコマンド入門の大事なところをメモっていく ncコマンドについて 個人的に、最近ncコマンド使う機会が増えてきて、この本でも結構語られているので、使い方くらいはメモっておきたい ncコマンドはTCPもしくはUDPのコネクションを貼ってくれるコマンド。送信するビット列は完全に自分で選ぶことができる。 以下のコマンドでサーバをTCPで起動できる。 -l はlistenの略で、リッスンしている、つまりサーバです nc -l 55555 以下のコマンドで、ncサーバとコネクションを貼ることができる nc <ip addr> <port> よくあるncコマンドの使用例 使用例としては、あるサービスのクライアントがどんな感じでbit列を送ってくるのかをサーバ側から可視化するときに使うイメージが強いな。 例えばUDP通信の代表例であるDNS resolutionね。こんな感じです。 ローカルホストで以下のncサーバを立てる # nc -u -l 1053 > query_packet.txt こいつは、1053万ポートでUDP通信を待ち受けている。で、受け取ったパケットをquery_packet.txtにリダイレクトしている。 このサーバに対して、以下のdigコマンドを送ることで、DNSクライアントがどのようなパケットを送信しているかがわかる。 dig +retry=0 -p 1053 @127.0.0.1 +noedns google.com ここからは、追加での遊びですが、こんな感じで、ncサーバで受け取ったパケットを今度はncクライアントに流し込んで読み込ませることもできると。おもろいっすね。 nc -u 8.8.8.8 53 < query_packet.txt > response_packet.txt ちなみに、以下のコマンドでhexでパケットの中身が見られるようになります。 hexdump -C query_packet.txt sshクライアントの動きをncサーバをたててみてみる nc -l 10022 > clien_packet.txt ssh localhost -p 10022 ray@delta:~$ hexdump -C clien_packet.txt 00000000 53 53 48 2d 32 2e 30 2d 4f 70 65 6e 53 53 48 5f |SSH-2.0-OpenSSH_| 00000010 38 2e 39 70 31 20 55 62 75 6e 74 75 2d 33 75 62 |8.9p1 Ubuntu-3ub| 00000020 75 6e 74 75 30 2e 31 30 0d 0a |untu0.10..| 0000002a みたいな感じで見られてりして、マジで面白いわけですね。はい。ってことで、ncコマンドはガチで便利だし、知っておいた方がいいって話です。 ...

August 18, 2024 · 1 min · 200 words · Me

Learn_k8s_4

大人気K8Sシリーズ。 今回でなんと第4回目 まずは、過去の振り返りをやっていきましょう。 振り返り 過去の奮闘記録。 構築日記その1 構築日記その2 構築日記その3 第1回目と第二回目はインフラ構築を頑張っていた感じです。引っ越しとかあって、K8Sの勉強は飛び飛びになっている感じでね。 そして、第3回にして、やっと色々とインフラ構築をスムーズにできて、さまざまな概念についても理解できてきた、という感じです。 はい、サービスね。これが大事な概念だった。POD間で通信をするためには、Serviceが必要だったのではないか?とね。ServiceでPODをcoreDNSに登録することができる。 そして、今回の第4回目では、K8Sの使い方をもっと詳しく理解していきましょう、という回になっています。 具体的には、「つくって、こわして、直して学ぶkubernetes入門」という本に従って色々と進めていきたいと思っています。はい。 そして、第5回目に、私が開発した競馬システムをついにデプロイする、という感じに持っていきたいと思っています。よろしくお願いします。

August 18, 2024 · 1 min · 14 words · Me

House_keeping

家事 8/13 R 風呂掃除 皿洗い T 昼ごはん 洗濯 コンロ掃除 8/14 R T 朝ごはん 昼ごはん

August 13, 2024 · 1 min · 14 words · Me