「あらゆる量子計算」ができるなら、その一例でいいから、その計算の内容を書けよ!
昨日、一日中、ネットで「量子もつれ」のアプリケーションの調査をしていました。
I spent all day yesterday researching the application of "quantum entanglement" on the internet.
正直、大変疲れました。
To be honest, I was very tired.
―― 「量子もつれ」って、量子暗号とかデバイスでは使えそうだけど、量子コンピュータで使うところないじゃないのかな?
"Quantum entanglement" could be used in quantum cryptography and other devices, but I wonder if there's any place to use it in a quantum computer?
と思いながら、資料を読み込んでいたのですが、とあるニュースリリースの中に、
While thinking that, I was reading through the material. In one news release, I read a phrase and got angry,
「従来の限界を克服する、あらゆる量子計算を実行できる大規模量子もつれの生成」
"The creation of large-scale quantum entanglement that can perform any kind of quantum computation, overcoming the limitations of conventional methods."
という一文を読んで、かなり腹を立てていました。
「あらゆる量子計算」ができるなら、その一例でいいから、その計算の内容を書けよ!
If you can do "any kind of quantum computation", just use that one example and write down what that computation is!
と、ぶつくさ言いながら、それでも、そのニュースリリースを数回も読み直していました。
I was bummed, but I still had to re-read that news release several times.
そして、「二次クラスター状態」の絵を見直している時、
And while reviewing the picture of the "secondary cluster state, I shouted
『あーー! そういうことかーーー!!』
"Aah! So that's how it is!"
と、叫んでしまいました。
「量子もつれ」をそういう風に使うのか ―― 凄いこと考える人間と、実装する人間がいるもんだ、と、久々に目の覚める思いでした。
That's the way they use quantum entanglement -- It's been a long time since I've had an eye-opening experience, and I'm amazed that there are people who think great things and people who implement them.
-----
次回のコラムでは、是非、この私の驚愕をお伝えしたいです。
I would like to share my astonishment with you in my next column.
そんな訳で、今も、せっせと図面を作成しています。
That's why I'm still working diligently on the drawings.
(さっきまで、アリスとボブの線画を描いていました(分かる人には、分かるはずです))
(Now I was drawing Alice and Bob (for those of you who know what I mean))
私は『幸せに狂っている私』がいい。
(Continuation from yesterday)
私は、物心ついた頃から、ボンヤリと、
I have been thinking about this for as long as I can remember.
「私とは、私という"主体"と、私という"客体"である」
I am both the subject of me and the object of me.
と、思ってきました。
(これ、オルテガの「私とは、私と私の環境である」をパクっています)
(This is the mimics Ortega's phrase "I am what I am and my environment")
判りにくかったら、「私は私の"クローン"と生きている」でも「私は私の"双子"と同居している」でもいいです。
If it's hard to understand, I say "I'm living with my clone" or "I'm living with my twin".
要するに、私の中には、私を動かす私と、その私を観測する私の、2人いる、ということです。
In short, I have two people, one who moves me and the other who observes me.
で、私が思うに ―― 『自分が嫌い』な人は、その観測者の評価が厳し過ぎる。
And I think -- people who 'hate themselves' are too harsh in their observers' estimation.
365日、24時間、一緒に生きている「私」を、「私」が嫌ってしまったら、「私」が可哀想すぎます。
I would feel too sorry for "me" if "I" hated the "me" that I live with 365 days a year, 24 hours a day.
一番近くにいる「私」が「私」を守ってあげなくて、どうする。
What if the "I" closest to "me" doesn't protect "me"?
「上手くできない私」を『よしよし、大丈夫。今度は上手くいくよ』といって、一番甘やかせることのできる人間が、「私」以外の誰がいるというのでしょう。
Who else could it be but "me", who can indulge me with saying 'It's okay, I'll get it right this time,", whenever I fail.
-----
私の場合 ―― さらに、自分を甘やかすだけで止まらず、
In my case, I don't stop indulging myself.
『私は悪くない。1mmも悪くない。全ては、私以外の世界が悪い』
"It's not my fault at all. It's all the world's fault but me"
と 「本気」で思っています。
I "seriously" believe that.
なぜ、私は、そう思えるのか。
Why can I think that?
「世界が悪い」のであって、「私は悪くない」からです。
It's because "the world is bad" and "it's not my fault.
少なくとも、「世界の中心は私である」という思想からは、この「事実」しか導出できません。
At the very least, this is the only "fact" that can be derived from the idea of "I am the center of the world".
-----
もっとも ―― これまで、多くの人間から、私は、「狂っている奴」とか「幸せな奴」とか言われてきました。
However, I've been told by many people that I'm a "crazy guy" or a "happy guy".
彼らは「軽蔑」も「悪意」もなく、また「敬意」も「憧憬」もなく、客観的な観測結果として、私に報告していました。
They reported it to me as an objective observation, without "disdain" or "malice" or "respect" or "longing".
そして、私も、「観測者」としての彼らの意見を聞いてきました。
And I've heard their opinions as "observers" as well.
私は、彼らの「観測結果」を信じています ―― だから、私は、『幸せに狂っている奴』なのでしょう。
I believe their 'observations', So "I'm a 'happy crazy guy", I guess.
-----
『幸せに狂っている奴』だけが、『自分が嫌い』という呪いから逃れられるのであれば ――
If only the "happy crazy guy" could escape the curse of "I hate myself",
私は『幸せに狂っている私』がいい。
I want to be the "happy crazy guy".
私は、「あなたはあなた自身だけで価値があるんだよ」というような、『優しい言葉』はいりません。
I don't want "kind words" like, "You're worth it on your own".
Google Chromoでmdファイルの表示にちょっとはまった件
ChromeにAdd-onを追加
ChromウェブストアのMarkdown Preview Plusのページを開きます
https://chrome.google.com/webstore/detail/markdown-preview-plus/febilkbfcbhebfnokafefeacimjdckgl?hl=ja
[Chromeに追加]ボタンをクリックします
と、ここまではいいんだけど、次をやらないと表示しない
から、
から「詳細」を選び
をアクティブにするのが重要。
さらに、WordPressでは、エディタ「Gutenberg」を入れると、最初からMarkdownが使える
なかなか便利です。
以上
ですが、見て見ぬふりをしてはいけません ―― 私たちは、相対評価の世の中で生きているんです。
(Continuation from yesterday)
上記の私の検討に基づけば、
Based on my considerations above,
「自分を、自分の望むような自分として製造してくれなかった、親が嫌い」と同じようにも思えます。
It seems like the same thing as "I hate my parents for not manufacturing me as the person I want to be.
しかし、ネットで調べてみると『自分が嫌い』を、親に転嫁しているようなケースは、あまり見られません。
However, if I look online, I have not found many cases of people shifting the blame of "I hate myself" to their parents.
まあ、そりゃそうです。
Well, that's true.
その場合は「親が嫌い」と言えば、それで足りるのですから。
In that case, you can say "I hate my parents" and that will be enough.
-----
『自分が嫌い』のロジックは、
The logic behind "I hate myself", to be represented by an inequality.
■ (自分が理想とする自分 - 自分が自認している自分) > (自分の許容できるしきい値)
"My ideal self" - "Self-identified self" > "My acceptable threshold."
しかし、この不等式は「自己目標が高い」とも言える訳で、一概には悪いこととは言えません。
However, this inequality can be described as "high self-goals," which is not generally a bad thing.
ただ、この「自己目標」というのは、自分以外の他人との「比較」で作られていることが多いようです。
However, this "self-goal" is often created by "comparison" with others.
要するに「相対評価」の結果ということです。
In short, it's the result of a "relative assessment".
「相対評価」を、悪いことのように言う人は多いです。
Many people talk about "relative evaluation" like it's a bad thing.
ですが、見て見ぬふりをしてはいけません ―― 私たちは、相対評価の世の中で生きているんです。
But we can't turn a blind eye to it - we live in a world of relative evaluation.
それを「気にするな」とかいっている奴は、はっきり言って、『現実世界を認識できないバカ』でしょう。
Anyone who says that's "never mind" is, to put it bluntly, 'an idiot who can't recognize the real world'.
経験上、「自分は自分自身だけで価値があるんだよ」という『優しい言葉』が大量に散まかれているWebサイトのページは、
In my experience, a page on a website that is littered with a large amount of 'kind words' that say 'You' are worthy of your own alone" has been based on, I think
■ピンク色の背景で、
"Pink Background"
■花びらが舞っていて、
"The petals were dancing"
■ページの中には、"スピリチュアル"とか"神さま"とかいう単語が顕在している
"In the pages, the words "spiritual" and "God" are apparent"
ように思えます(この2つの言葉を濫用する奴が、私は嫌いなんです)
I don't like people who abuse these two words.
(To be continued)
つまり、親と子どもの間の『嫌い』には、非対称の関係が成立している訳です。
『自分が嫌い』
"I hate myself"
という歌詞の歌は多いですし、自分でそう言っている人も多いです。
There are a lot of songs with lyrics like that, and a lot of people say that themselves.
その一方で、
On the other hand,
『自分の子どもが嫌い』
"I hate my kids"
という歌詞の歌は見たことがありませんし、(どう思っているかはさておき)そのように公言している人は知りません。
I've never seen a song with those lyrics, and I don't know of anyone who professes to do so (regardless of how they feel about it)
「何でかな?」って自問するまでもなく、それは、「主体と客体が違うから」です。
Why? I don't have to ask myself. Because the subject and the object are different.
自分の子どもと言えども、子どもは自分ではありません。
Even though they are your children, they are not your children.
-----
にも関わらず、『××が嫌い』は、世の中に溢れ返っています。
In comparison, the world is full of "I hate xx".
加えて、血縁であっても、『自分の親が嫌い』というのは、どこにでも見られます(歌詞では見られませんが)。
Additionally, "I hate my parents", even if they are related by blood, can be found everywhere (though not in the lyrics).
つまり、親と子どもの間の『嫌い』には、非対称の関係が成立している訳です。
In other words, there is an asymmetrical relationship between parents and children about "dislike".
子どもの方が立場が強いです。
The children are in a stronger position.
-----
子どもは、
Children can give reasonable explanations about "dislike",
『子どもは親を選んで生まれてくることができない』
"Children are not born to choose their parents"
とか、
or
『子どもは、そもそも、被扶養者として弱い立場を強いられる』
"Children are forced to be vulnerable as dependents in the first place"
とか、
or
『子どもは、運命的に親の遺伝を継承させられる』
"Children are destined to inherit their parents' genes"
とか、「嫌い」に関する筋の通った説明ができます。
一方、親の方には、このような筋の通った説明がしにくい(というか「できない」)です。
On the other hand, it's difficult (or "impossible") for parents to provide such a reasonable explanation.
『生まれてこれて、存在していることを、感謝しろ』
"Thank me for being born and for being here"
と、子どもに言える大人は、相当な心臓の持ち主でしょう。
An adult who can say those things to a child must have a pretty good heart.
-----
さて、『自分が嫌い』の話に戻ります。
Now, back to the "I hate myself" story.
(To be continued)
「シンデレラ2020」
「顔認証システム」というものに対する、世間(特にIT関連)の動きが、慌しいです。
There is a flurry of activity in the world (especially in the IT field) regarding the "face recognition system".
まあ、これについては、このキーワードでググって頂ければ、直ぐに分かることですので、言及しません。
Well, I won't mention this because it's easy to find out if you Google these keywords.
-----
ところで、「シンデレラ」では、本人認証を「足のサイズ」で行っています。
By the way, "Cinderella" uses "foot size" to authenticate her identity.
えらく迂遠な探索方法です。王子が、直接、本人の顔認証をすれば足ることです。
It's a very roundabout way of searching. The prince should be able to identify himself in person.
まあ、「足のサイズ」は、第1次チェックであり、最終チェックは、王子自身による面談なのでしょう。
Well, the "foot size" is the primary check and the final check is probably an interview by the Prince himself.
とすれば、宮殿の複数の捜索チームが、分担して、街の娘の全数検査をしているのだろうと思います。
If that's the case, I'm guessing that multiple search teams at the palace are dividing up and inspecting all of the city's daughters.
探索チームは、シンデレラの靴の模造品を、複数作成しなければならず、結構な手間暇になるだろうなぁ、と思います。
The search team would have to create at least several pairs of imitation Cinderella shoes, which would be quite a lot of time and effort, I think.
3Dプリンタもない時代に ―― 国民の血税使って
In an age when there were no 3D printers, with wasting the people's tax dollars.
------
国民の反感を買うことなく、これらの調査を円滑にすすめるには、
In order to facilitate these investigations without public outcry
『このガラスの靴から、指定感染症のウイルスが検出された。急ぎ、被感染者を隔離する必要がある』
"A designated infectious disease has been detected in these glass shoes. We need to isolate the infected as soon as possible"
程度の作り話が必要になると思います。
I think you'll need to make up a story like this.
とすれば、
So, if
『舞踏会の参加者全員が、クラスターの発生源(可能性)として、濃厚感染接触者として、PCR検査を受ける対象として、再度、王宮に招集される』
"All ball attendees will be called back to the royal palace to be subjected to PCR testing as concentrated infectious contacts of the source of the cluster."
加えて、感染者や医療従事者に対する偏見や差別や、そのような無知性な人間が引き起こす社会問題などを突っ込んだ、
With including prejudice and discrimination against infected people and health care workers and the social problems caused by such ignorant people, I would like to see a stage,
「シンデレラ2020」
"Cinderella 2020"
の舞台を ―― 私は見たい。
-----
科学的な思考や、自力で正しい知識を獲得しようとしない怠惰な人間の批判だけでなく、そろそろ「感染」を悪用した「権力の陰謀」の検討も始めておくべきかと思います。
It's not just a criticism of people who don't think scientifically or who are lazy enough to try to acquire the right knowledge on their own. I think it's time to start examining the "conspiracy of power" that exploits the "infection".
実際、この手(感染・検疫を悪用した)の権力の陰謀なんぞは、近代史(特に世界大戦中)を調べれば、ボロボロ出てきます。
In fact, this kind of (misuse of infection and quarantine) power conspiracy is ragged if you look into modern history (especially during the world wars).
「無理せんと、リバースプロキシ(nginx)使えば?」
ここのところ、Websocket通信のセキュア化のコーディングで、かなり嵌ってしまっている私に、師匠のSさんから、
GoのサーバーでWSSやHTTPSのプロトコルを直接扱うことをせず、かわりに、リバースプロキシサーバーでHTTPSやWSSプロトコルを扱い、GoのサーバーではHTTPやWSプロトコルを扱うように構成を変更する、というのはいかがでしょうか?
とのご提言を頂きました。
あ、そりゃそうだ ―― と思いました。私は、Websocket通信のアタックさえ回避できれば、なんでも良いわけでして、何がなんでもwssをやりたい訳ではありません。
インターネットの中でセキュアが担保できれば、内部システムなんぞスカスカでも構いません(そもそも、システム内部に侵入されたら、その時点で"システムとしては、"The END"です)。
とりあえずPC(Windows10 Box)の中でnginx(Webサーバ)を立てようと思いました。
いや、驚くほど簡単。「インストールから実行まで10秒を切ったWebサーバ」というのは生まれて始めてかもしれません。
http://nginx.org/en/download.html から、Stable versionをダウンロードして、
解凍して、"nginx.exe"を叩くだけ。(私の場合、ダウンロードの場所は、C:\の直下にしておきました)
これで、ブラウザから、http://localhost と入力して稼動確認
ちなみに、トップページは、htmlフォルダの中にあるので、適当に変更すれば、普通のWebサーバにもなります。
それはさておき。
今回の場合、クライアントからnginxまでのセキュアが確保できれば足り、その後ろは、普通のwebsocketの通信ができれば良い、とします(golangでwebsocketのセキュア通信って、もう気が狂いそうになるほど面倒)。
Sさんからは、nginx.confを送付して貰ったのですが、まあ、当然ですが、一発では動きませんでしたので、先ず、セキュア通信なしのリバースプロキシを動かしてみます。
nginxでポート8000で受けて、それを、エコーサーバ(8080)に転送するだけのものですが、NginxのリバースプロキシでWebソケットを通す際の設定 とSさんから送って頂いた設定ファイルを参考にさせて頂いて、以下のようにconf/nginx.confの内容を書き換えました。
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 8000;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_read_timeout 86400;
}
}
}
ちなみにエコーサーバは、以下のものをそのまま使っています。
でもって、こんな感じでちゃんと動いています。もちろんlocalhost:8080でも動きます。
ーーーー
では、ここから、ngnixまでのセキュア化の検討を開始します。
ここでしばしスタック中。TLSがちゃんと動いているのか不安になったので、普通のWebでできるか、以下のようなnginx.confを使って、index.htmlで試してみました。
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate algo.crt; # https://wp.kobore.net/2020/09/post-1124/で作ったもの
ssl_certificate_key algo.key; # 同上
location / {
root html;
index index.html index.htm;
}
}
}
https://localhost/ でも、http://localhost/ でも動いていますので、algo.crt, algo.keyについては(多分)大丈夫だと思われます。
では、元の問題に戻りましょう。(4時間格闘)
どうやら、外向けをセキュアにするには、nginx.confを3箇所だけ変更追加すれば良い、と記載されていたので、以下のようなnginx.confに改造した "#change"と、"#add"のところだけ。
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
#listen 8000;
listen 443 ssl; # change
server_name localhost;
ssl_certificate algo.crt; #add
ssl_certificate_key algo.key; #add
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_read_timeout 86400;
}
}
}
ところが、https://localhost を実施しても、サーバ側から、以下のエラーがでてきて、どうにもならない。
upgrade:websocket: the client is not using the websocket protocol: 'websocket' token not found in 'Upgrade' header
Visual Studio Codeにかけて、サーバでトレースしても読めないし(htmlの部分だから無理ない)、正直もうどうして良いか分からなくなってきたとき、「あ、chromoのディベロッパーツールを使えばいいか」と気が付きました。
そんでもって、
これで気がつきました。ここって"ws:"ではなくて、"wss:"にしないとアカンのじゃないかな、と。
で、ここを修正して、ECHOサーバを立ち上げ直したら、無事稼動することが確認できました。
まあ、まだまだ課題山積ですが、とりあえず、家(システム)の外はセキュアにする目処が立ちましたので、wssの通信プログラムで苦労するのは「やめる方向」で決定しました。
nginxをリバースプロキシにして、そこまではガチガチにしておき、家の中はユルユルに作るで、進めていくことにします。
以上
ビーカーとかフラスコとかで、ジュースとかビール飲みますよね、普通に。
在宅勤務が続き、飲料水を取りに、頻繁に階下のキッチンに行くことが普通になりましたが、これが結構面倒です。
I continue to work at home and frequently go downstairs to the kitchen to get drinking water. This is quite annoying.
大きなマグカップを購入しようと思ったのですが、どうも私の要求を満たすサイズのマグカップがありません。
I was going to buy a large mug, but apparently I don't have a size mug that meets my requirements.
で、Amazonで購入したのが、これ。
So, I bought this from Amazon.
計量カップです。
A measuring cup.
これが思いの外、良いです。
This is better than I thought.
一気に沢山の飲料水を確保できるのはもちろんですが、目盛が付いているところが良いです。
In addition to being able to have a lot of drinking water at once, I like the "scale".
単位時間当たりの摂取水分量が、定量的に測定できる点が好きです。
I like the fact that the amount of water intake per unit of time can be measured quantitatively.
-----
私は、食事の最中にも、このマグカップ・・・もとい、計量カップでお茶を飲んでいます。
I drink my tea by this mug...or measuring cup, even when I'm eating.
しかし、嫁さんからはクレームを受けています。
However, my wife has complained about it.
「食事の雰囲気を壊す」とか。
It would "ruin the atmosphere of the meal.
そんなに違和感あるかなぁ?
Do you think it's that uncomfortable?
ビーカーとかフラスコとかで、ジュースとかビール飲みますよね、普通に。
You usually drink juice or beer with a beaker or flask or something like that.
C:\Users\ebata\WssSample\goClient>go run goClient.go conn.go hub.go
tls: first record does not look like a TLS handshake がなんともならない件
$ git clone https://github.com/GuyBrand/WssSample
で取ってきた、コードで、色々調べている。
サーバは、以下で起動。
クアイアントは、
で起動(に失敗)
以下、色々ごそごそやってみる。
ちなみに、getCrtホルダは、証明鍵を作るプログラムのようす
C:\Users\ebata\WssSample\genCrt>ls
genCrt.go new.crt new.key
C:\Users\ebata\WssSample\goClient>curl localhost:9200
Client sent an HTTP request to an HTTPS server.
C:\Users\ebata\WssSample\goClient>curl https://localhost:9200
curl: (77) schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - 信頼されていない機関によって証明書チェーンが発行されました。
「信頼されていない機関」って「私」か。そりゃそうだが。
うーん、では、curlコマンドを使ってHTTPSのAPIを叩く と 、SSL通信時発生する証明書エラーとその仕組みを理解する を参考にして、
C:\Users\ebata\WssSample\goClient>curl -k https://localhost:9200
を実行。
色々でてきた。ということは、サーバとしては機能しているようです。
とは言え、
は、解決されていないです。
そもそも、私、SSLの仕組み、きちんと理解できていると思っていません(だからAWSのhttps化で地獄を見ることになった)。今回、イケメンとラブレターで学ぶSSLの仕組み で、なんとか分かったような気になりました。
C:\Users\ebata\WssSample\server の中に入っている、algo.crt を叩いてみたら、
が出てきました。インストールして良いものかどうか迷いましたが、(有効期間内だったようだし)「証明証のインストール」のボタンを押してみました。
よく分かりませんが、言われるがまま(にボタンを押していきました。
そんでもって、サーバ側からは、C:\Users\ebata\WssSample\server>go run main.go hub.go conn.go クライアント側には、C:\Users\ebata\WssSample\goClient>go run goClient.go conn.go hub.go を入力しましたが ―― うん、症状改善なし、でした。
一応ブラウザから https://localhost:9200 を押下したみたのですが、
こんな感じですねえ。サーバのエラー表示はこんな感じです。
「詳細設定」ボタンを押して、「localhost にアクセスする(安全ではありません)」を押下すると、一応動きます。
この画面2枚上げると、表示が連動しているのが分かります。
Windows10の環境設定画面から、以下のような設定もやってみたけどダメでした(ので消しました(別の問題を引き起こしそうだったので))
(一時休憩)
現在勉強中のページ
MacでGolangでhttpdでTLSでLet's Encryptを使ってみた。
ここで困っていたら、普段からご教示して頂いているSさんから「mkcertを使ってみたら」というアドバイスを頂きました。で、get clone https://github.com/FiloSottile/mkcert.git などもやってみたのですが、ソースコードしか入っていなくて、このコンパイル方法も良く分かりませんでした。
https://github.com/FiloSottile/mkcertを除いてみたら、バイナリがダウンロードできそうことが分かりました。
でもって、ここから、Windows10で使えそうなバイナリをダウンロードしました。
ダウンロードしたところから、直接叩いてみたら、C:\Users\Ebata\AppData\Local\mkcert の中に、鍵ができていましたが、最初に、mkcer -installしろ、と言われています。
本当はmkcertにリネームした方が良いのでしょうが、面倒なので、そのまま mkcert-v1.4.1-windows-amd64.exe -install でセットしました。
その後、mkcert-v1.4.1-windows-amd64.exe localhost 127.0.0.1 と入力すると、"localhost" と "127.0.0.1"を含む鍵が、カレントディレクトリにできるようです。
で、"localhost+1-key.pem"を "algo.key"とリネームして、"localhost+1.pem"を"algo.crt"とリネームして、C:\Users\ebata\WssSample\serverに放り込む。
C:\Users\ebata\WssSample\server>go run main.go conn.go hub.go
file algo.crt found switching to https
とこの状態で、ブラウザから、https://localhost:9200を入力
おお! 警告が出なくなった!!! サーバはちゃんと動いているみたい。
では、クライアントのプログラムも・・・
うん、こっちはダメだな。
ws, _, err := websocket.NewClient(c, u, wsHeaders, 1024, 1024)
if err != nil {
fmt.Println(err.Error())
return
}
トレースで、このNewClient()でエラーが出ているのは分かっているんですが、この原因は分かりません。
クライアント側のコードでは、鍵の読み込みをしていないようです。
ちなみに、WssSample/gemCrt に鍵を生成するプログラムが入っていますが、これで作った鍵では、httpsの認証問題をクリアできませんでしたので、素直に「mkcertを使ってみたら」と申し上げます。
(もう一度チャレンジしますが今日は▽ここまで)。