nginx でオレオレ証明書を持っている人だけにアクセス制限をする on Docker

docker-logo docker

目的

特定の証明書がインストールされているPCのブラウザのみアクセス許可する。

その検証を行いたい。

 

この記事のやり方だと、ブラウザでアクセスした際、証明書エラーの画面が表示される。(信頼されていないサーバー証明書を使うので)これも合わせて回避したい場合は、こちらの記事を実施する。その場合、この記事は見なくていい。

 

やり方

nginxの用意

Dockerでnginxを用意する

 

証明書を用意して実行

Nginxでクライアント証明書による認証を行う - Qiita
Nginxでクライアント証明書による認証を行う 作成するファイルたち ca.crt → nginx側の設定で利用 ca.key user.crt user.csr user.key user.pfx → クライアント(今回...

 

こちらを参考に実施。

 

しかしながら何点かひっかかったので、以下に引っかかった点を記録する。

 

nginxの再起動ができない。nginx: [emerg] “server” directive is not allowed here in

nginx.confの編集を終え、

service nginx restart 

しようとすると、

nginx: [emerg] "server" directive is not allowed here in

のメッセージが出力されてしまう。nginx再起動不可。

 

 

調べると、

 

 

とのことじゃった。

 

 

No such file or directory:fopen(‘/etc/nginx/server_certificates/server.crt’,’r’) 

 

その後、以下のえらーに遭遇じゃ。

 

Restarting nginx: nginx2022/11/01 08:53:23 [emerg] 590#590: cannot load certificate "/etc/nginx/server_certificates/server.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/server_certificates/server.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: [emerg] cannot load certificate "/etc/nginx/server_certificates/server.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/server_certificates/server.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed


 

server_certificates/server.crt

が存在しないことが原因じゃて。

server.crtを設置する。

さっき、Qiita「1-2. CA 証明書を作成」の項で作ったやつ。

cd ../client_certificates/

pwd
/etc/nginx/client_certificates

cp ca.crt ../server_certificates/server.crt

mvじゃなくてcpじゃぞ。

この移動元のフォルダにもca.crtが必要じゃぞ。

 

 

X509_check_private_key:key values mismatch) ~ /etc/nginx/nginx.conf test failed

 

Restarting nginx: nginx2022/11/01 10:19:33 [emerg] 607#607: SSL_CTX_use_PrivateKey("/etc/nginx/server_certificates/server.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: [emerg] SSL_CTX_use_PrivateKey("/etc/nginx/server_certificates/server.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed

当然ながら秘密鍵も無いと怒られたな。

 

一個前の項と同様の手順でこちらも設置じゃ。

 

pwd
/etc/nginx/client_certificates

 

cp ca.key ../server_certificates/server.key

 

 

「この画面ではプライバシーが保護されません」画面は、表示される

この接続ではプライバシーが保護されません

っていう画面は、表示されるはず。

GOogle CHrome での、 この接続ではプライバシーが保護されません 画面

 

「詳細設定」ボタンをクリックするんじゃぁ。(ちゃんと自分の検証ページであることを確認してね。)

 

この画面を出したくない場合は、こちらの記事で!

 

 

 

コメント

タイトルとURLをコピーしました