質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

27218閲覧

オレオレ証明書で認証させると、「証明書ベースの認証に失敗する」

hagetak

総合スコア16

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/09/01 09:20

目的

① オレオレ証明書・クライアント証明書を作成する。(済)
② 特定のページにクライアント証明書を利用してアクセスする。(それ以外は省く)

環境について

前回の質問を参照してほしいです。
https://teratail.com/questions/15400

証明書関係の作成は、以下のサイト通りに実行しました。
http://www.webtech.co.jp/blog/optpix_labs/server/1780/
http://www.webtech.co.jp/blog/optpix_labs/server/1159/

vim ssl.conf(認証関係のみ)

ssl.conf

1 SSLCertificateFile /etc/httpd/conf/ssl.crt/trac.crt 2 SSLCertificateKeyFile /etc/httpd/conf/ssl.key/trac.key 3 4 <Directory /var/www/html/trac/> 5 PassengerEnabled Off 6 # SSLOptions +StdEnvVars 7 allowoverride All 8 Options -MultiViews 9 SSLRequireSSL 10 SSLVerifyClient require 11 SSLUserName SSL_CLIENT_S_DN_CN 12 Satisfy Any 13 SSLRequire %{SSL_CLIENT_S_DN_CN} in {"hagetak"} 14 </Directory>

発行した証明書

  • hagetak.p12(自身のPCにインストール済み)
  • trac.crt(上記のconf通りに配置済み/自身のPCにインストール済み)
  • trac.key(上記のconf通りに配置済み)

エラー内容

http://www.webtech.co.jp/blog/optpix_labs/server/1780/
http://www.webtech.co.jp/blog/optpix_labs/server/1159/
通りの設定で、

[ Google Chrome]

  1. ウェブページにアクセスすると、証明書選択画面が出る
  2. 証明書(CommonName: hagetak)選択後、以下のエラーが出る
証明書ベースの認証に失敗しました ERR_BAD_SSL_CLIENT_AUTH_CERT このサーバーでは認証用の証明書が必要ですが、ブラウザから送信された証明書は承認されませんでした。証明書の有効期限が切れているか、サーバーがその発行元を信頼していない可能性があります。別の証明書がある場合はそちらをお試しください。ない場合は、別の発行元から有効な証明書を入手しなければならない可能性があります。

ログを確認すると以下のエラーが出力される.

> cat ssl_error_log [Tue Sep 01 17:30:20 2015] [error] [client 100.100.100.110] Re-negotiation handshake failed: Not accepted by client!? [Tue Sep 01 17:30:26 2015] [error] [client 100.100.100.110] Certificate Verification: Error (20): unable to get local issuer certificate [Tue Sep 01 17:30:26 2015] [error] [client 100.100.100.110] Re-negotiation handshake failed: Not accepted by client!?

なんの設定が足らないのでしょうか。

  • パーミッションの設定
  • クライアント証明書を特定のサーバに設置する?
  • confに追加する?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

解決済となりましたが、自己証明書を使わず、startssl や、WoSign Free SSLなどの無料の証明書を活用するというのもありかもしれません。

投稿2015/09/01 21:59

Ken.sakanakana

総合スコア1768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

「Certificate Verification: Error (20): unable to get local issuer certificate」はクライアント証明書の CA 情報がサーバー側で確認できなかったのだと思います。

Apache httpd の設定で、SSLCACertificateFile に CA証明書を設定していますでしょうか?
設定している場合、クライアント証明書を発行した CA と同じ CA のものでしょうか?

投稿2015/09/01 10:11

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hagetak

2015/09/01 10:38

お早い回答ありがとうございます。設定していませんでした。CAの証明書は、pem形式しかないのですが、どのようにすればcrt形式に変換できるでしょうか? これまでどおりのコマンドで行うと以下のエラーが出ます。 > openssl x509 -in certs/cacert.pem -out ca.crt ``` Error opening Certificate certs/cacert.pem 140140038588232:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('certs/cacert.pem','r') 140140038588232:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400: unable to load certificate ```
hagetak

2015/09/01 10:39

別のファイルを指定していたみたいです。別のファイルを指定したところうまく生成されました。今から試してみます!ありがとうございます!
hagetak

2015/09/01 10:50

無事解決することが出来ました。 以下のサイトを参考にした場合、ssl.confに > SSLCACertificateFile /etc/httpd/conf/ssl.crt/ca.crt 追加する必要があります。そのca.crtは、以下のコマンドで作成することができます。 > openssl x509 -in certs/cacert.pem -out ca.crt http://www.webtech.co.jp/blog/optpix_labs/server/1780/ http://www.webtech.co.jp/blog/optpix_labs/server/1159/ この度はありがとうございました。
TaichiYanagiya

2015/09/01 14:23

あれ? PEM のままでいいはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問