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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Q&A

解決済

2回答

1935閲覧

通信相手からもらったp12ファイルをサーバーにインポート

teratemo

総合スコア15

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

0グッド

2クリップ

投稿2017/08/18 00:50

編集2017/08/30 05:24

タイトル通りで
通信相手から渡されたp12ファイルをサーバーにインポートする方法が全くわかりません。
相手→自サーバー へのアクセス時に「No trusted certificate found」が出るそうです。

また、自サーバーは既にこの証明書とは別の証明書でSSL化済みです。
相手からのサポートは一切受けられません。「サーバーに証明書をインポート」とだけ言われます。

https://server-setting.info/centos/apache-ssl-auth-setting.html
これを参考に、元々コメントになっていた
SSLCACertificateFile
SSLVerifyClient
SSLVerifyDepth
をコメントから外し色々変えてみましたがダメでした。

とりあえずp12からpemにできれば良いのかとも思い
http://qiita.com/machio77777/items/48bcbe8ac58385a44799
を参考にPHPファイルを作り、適当なディレクトリにそのPHPとp12ファイルを入れて実行してみましたが
特にエラーが出るわけでもないのにファイルが作成されませんでした。

結局何をどうしたら良いのでしょうか?
自サーバー=自分側のWEBサーバー と見てください。


追記
pemへの変換はできました。

状況追記
この相手とのやり取りは3パターンあり
1.自端末(WEBサーバーではない)→相手 のPOSTリクエスト送信
当然貰った証明書を使います。

2.相手→自サーバー のPOSTリクエスト送信
相手曰く、サーバー認証らしいです。

3.相手→自サーバー のPOSTリクエスト送信2
今問題になっているやつです。
相手曰く、サーバークライアント認証らしいです。

上記3点の内、1と2は問題なく成功しました。


状況追記2
SSLVerifyClient optional_no_ca
SSLCACertificateFile /etc/pki/CA/private/p12から変換したpemファイル
SSLVerifyDepth 10 デフォルトのまま

上記設定で結果は変わらずエラーだったそうです。


状況追記3
変換したpemの中身を表示してみたところ
SubjectのCNがサイト名だけではありませんでした。
もしやこれが影響しているのでしょうか?

Validity Not Before: Jul 25 00:00:00 2017 GMT Not After : Aug 26 23:59:59 2018 GMT Subject: C=JP, O=~~~, Limited, OU=~~~, CN=[自サイト名.co.jp] + [サイト名にはない文字列]

状況追記4
証明書が本当に正しいのかを相手に確認中
同時に、今動いているssl.confに問題がないか相手に見てもらっています。
普段なら割と早めに返事が来るのですがなかなか来ません。


状況追記5
ssl.confの確認すらやってくれないようです。


状況6
今になって、貰った証明書をサーバー証明書にしたらいいと返事がありました。
なのでp12から変換した
.crt
.key
.ca-bundle
をそれぞれ上から
SSLCertificateFile
SSLCertificateKeyFile
SSLCertificateChainFile
に当てはめ、再起動したところ
IEの画面ですが「別のサイトの証明書が使われている」と言う意味のエラー画面が出ました。

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

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

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

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

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

matobaa

2017/08/25 13:19

直感なんですが、これ、サーバ認証に失敗してませんか? クライアント認証の段階では、証明書が Trusted かどうかなんてクライアント側では気にしないんじゃないかと思うんです。
teratemo

2017/08/28 03:34

確認してみます。 サーバー認証時のエラーの一つとしては、例えばhttps://名前 ではなくIPでアクセスした時のアレで合ってますか?
matobaa

2017/08/28 11:02

はい、エラーメッセージは異なるものの、挙動としてはアレです。「ホスト名が証明書と違うよ」でなく、「サーバ証明書が検証できないよ」というエラーになることを期待。なんですが、これ条件を揃えるのが難しいですね……相手側の No trusted certificate found の詳細エラーメッセージがわかればもうちょっとなんとかなるんですが。
teratemo

2017/08/29 06:56

エラーの原文をくれ と伝えて貰えたのが No trusted certificate found だけなんですよ。更にそこで相手から出た指示が「証明書インポートしろ」のみなので、相手側すらエラーの詳細を把握してない可能性を感じますね。
matobaa

2017/08/29 13:53

相手側の開発言語はなんだかわかりますか?
matobaa

2017/08/29 13:56

SSLのサーバ認証・クライアント認証についてどの程度の知識をお持ちでしょうか?
teratemo

2017/08/30 05:27

相手の開発言語は分かりません。エラーメッセージから察するにJAVAではないでしょうか?私自身の知識は全く無いと言っても過言ではありません。まさに暗中模索でやってます。
matobaa

2017/08/30 15:09 編集

状況6 まじか。サーバ証明書に設定、ということはやっぱり追記1でいう2.サーバ認証でこけているんじゃないか。 とすると、これで解決するんじゃないでしょうか。なお、IEが出しているエラーは状況3 CNの謎の文字列に起因するものでしょう。一方で証明書内で「サブジェクト代替名」が指定されていたりするかも。
guest

回答2

0

p12 から pem 形式への変換は openssl pkcs12 でできると思います。
でも、その p12 ファイルは、相手のWeb(HTTPS)サーバーに接続するための HTTPSクライアント用の証明書なのでは?


(2017/08/21 16:25) 追記

3.相手→自サーバー のPOSTリクエスト送信2
今問題になっているやつです。
相手曰く、サーバークライアント認証らしいです。

クライアント証明書認証には以下の設定が必要です。

SSLVerifyClient require SSLCACertificateFile (CA証明書のファイル, PEM形式) SSLVerifyDepth 1
  • まず、SSLVerifyClient require として、クライアント証明書を必須とします。
  • SSL 接続時に送られてくるクライアント証明書が正しい Issuer であるかどうか、SSLCACertificateFile で指定した CA証明書と照合します。
  • 照合の際、中間証明書などがある場合は SSLVerifyDepth の値を大きくします。
  • SSLRequire または Require expr で、証明書の O, OU などで絞り込みます。

詳しくは http://httpd.apache.org/docs/2.4/mod/mod_ssl.html を参照ください。

相手から送られてくる証明書が手元の p12 ファイルということでしょうか?
「1.自端末(WEBサーバーではない)→相手 のPOSTリクエスト送信」と共用することは考えにくいのですが、もし、そうであれば、p12 ファイルに CA証明書ファイルが入っていないでしょうか?
「-----BEGIN CERTIFICATE-----」から「-----END CERTIFICATE-----」までが証明書で、
2つ以上あるなら、2つ目以降を切り出して SSLCACertificateFile のファイルとします。


(2017/08/23 12:55) 追記
もしかすると、SSLCACertificateFile に設定する CA証明書は p12 ファイルに含まれていないのではないでしょうか。
3の接続で、「相手が持っているクライアント証明書」(手元の p12 ではないかもしれない)を発行した CA の証明書を入手できないか、確認ください。

投稿2017/08/18 14:37

編集2017/08/23 03:56
TaichiYanagiya

総合スコア12146

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

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

teratemo

2017/08/21 04:27

ご回答ありがとうざいます。 ファイル変換はできました。 状況を追記しました。
teratemo

2017/08/21 08:46 編集

はい、相手から送られた証明書が手元にあるp12ファイルです。 現在の設定は SSLVerifyClient optional_no_ca SSLCACertificateFile p12から変換したpemファイルを指定 SSLVerifyDepth 10 デフォルトのまま と、なっています。 optional_no_caなのは 「クライアントは有効な証明書を提示するかもしれないが、それは検証できなくてもよい」と書いてあった為、多少違っていてもこれでいけるのでは?と、これにしました。 また、変換したpemファイルの中に-----BEGIN から ENDで括られていない部分があったので 現在はそれらを消した状態で相手に試してもらっているところです。
guest

0

自己解決

結果
既存のWEBサイトの中では不可能(証明書の名前を合わせる気がない)
それ専用サイトを別に作れ
でした。

投稿2017/08/31 06:14

teratemo

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問