🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

673閲覧

外部からサーバ証明書の情報所得について

Clementine

総合スコア158

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2019/11/26 06:00

表記の件につきまして質問致します。

terminal

1[yourname@example yourname]$ openssl s_client -connect www.yahoo.co.jp:443 </dev/null 2>/dev/null | openssl x509 -noout -serial 2serial=0EC2F28A086AFF40F6257936A64CC437E44D28AC 3[yourname@example yourname]$

上記のコマンドにてwww.yahoo.co.jpで使用しているSSL証明書のシリアル番号の情報が確認する事ができます。

これと同様にKUSANAGIのLinux環境のサーバへ複数のwordpressを入れて運用しているサーバーがあります。このサーバには以下のサイトURLがあります。
https://site1.com/
https://site2.com/

上記サイトには、それぞれ正規のSSL証明書を割り当てておりますが、証明書のプロパティーを以下コマンドで確認すると正規証明書ではなくKUSANAGIの自己証明書が取得されてしまいます。

Terminal

1[yourname@example yourname]$ openssl s_client -connect site1.com:443 </dev/null 2>/dev/null 2・・・省略 3--- 4Certificate chain 5 0 s:/C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=kusanagi71/emailAddress=root@kusanagi71 6 i:/C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=kusanagi71/emailAddress=root@kusanagi71 7--- 8・・・省略 9※説明をわかりやすくするため、「www.yahoo.co.jp」を例に説明しております。

この為、現在適用している証明書のプロパティーを外部から確認できない為、困っています。
上記理由によりシリアルを確認しようとすると

Terminal

1[yourname@example yourname]$ openssl s_client -connect www.nijimo.jp:443 </dev/null 2>/dev/null | openssl x509 -noout -serial 2serial=0752

適用している証明書ではなく自己証明書のシリアルが取得されてしまします。

こちらサーバへ適用している証明書のプロパティーを確認する情報がありましたら、
何卒ご教授いただけますようお願い致します。

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

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

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

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

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

guest

回答2

0

SNIを使ってホスト名で証明書を変えている場合、opensslコマンドでは-servernameオプションで取得可能です。

bash

1openssl s_client -connect example.com:443 -servername example.com < /dev/null

投稿2019/11/26 15:36

Eggpan

総合スコア3205

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

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

0

自己解決

LinuxコマンドでなくPHPで解決する事ができました。

php

1<?php 2$common_name = 'site1.com' 3 4$stream_context = stream_context_create(array( 5 'ssl' => array('capture_peer_cert' => true) 6)); 7 8$resource = stream_socket_client( 9 'ssl://' . $common_name . ':443', 10 $errno, 11 $errstr, 12 30, 13 STREAM_CLIENT_CONNECT, 14 $stream_context 15); 16 17$cont = stream_context_get_params($resource); 18$parsed = openssl_x509_parse($cont['options']['ssl']['peer_certificate']); 19 20$parsed['subjectAltName']; 21 22if (strpos($parsed['subject']['CN'], $common_name) !== false) 23{ 24 $serial_number10 = $parsed['serialNumber']; 25 $serial_number16 = system('echo "obase=16;' . $serial_number10 . '"|bc'); 26 $attr = str_split($serial_number16, 2); 27 $serial_number = implode(':', $attr); 28}

投稿2019/11/26 09:56

Clementine

総合スコア158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問