スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに

インターネットでは、TCP/IPを呼ばれるプロトコルを利用して通信しています。TCPには、暗号化の機能はありません。そのため、通信データは、平文(ひらぶん)と呼ばれる誰でも中身を見ることができるデータとして、通信経路に流れています。インターネットでは、サービスにログインするために、IDとパスワードが利用されたり、アマゾンなどのeコマースサイトでは、商品の購入時にクレジットカードが利用されます。グーグルなどのGmailと呼ばれるメールサービスや facebook のメッセンジャーやLINEのメッセンジャーアプリでは、人と人の会話のデータが行き交っています。認証情報、決済情報、メッセージなどが流れるインターネットは、プライバシーの保護やセキュリティの観点で、通信のデータの内容を暗号化する必要がありました。

暗号化されているインターネットの通信の多くは、TLSと呼ばれるプロトコルとTLSをサポートしているライブラリを利用して、データを暗号化して通信されています。このTLSのライブラリとして、OpenSSL が広く利用されています。通信を利用するアプリケーションの開発においては、ソケットと呼ばれるライブラリを利用して、通信プログラムを作成します。通信を暗号化するソフトウェアは、ソケットと組み合わせて、OpenSSLのライブラリで提供されるAPIを利用して、通信の暗号化を実現します。

多くのウェブサイトでは、TLSの通信をサポートしています。インターネットを利用している一般人の日常生活において SSL証明書は、HTTPSのサイトにアクセスしたときに、ブラウザが自動的に、サーバ証明書をサーバから取得し、バリデーション(検証)しています。証明書の検証とは、証明書が正しい認証局から発行されたのか、証明書の有効期限は問題ないか、などを確認することです。

ブラウザの機能を利用して、証明書の内容を確認することができますが、今回は、OpenSSLと呼ばれるコマンドで取得する方法について紹介します。

OpenSSLコマンドをインストールする

Ubuntuでは、以下のパッケージをインストールします。
sudo apt install openssl

CentOSでは、以下のパッケージをインストールします。
sudo dnf install openssl

FreeBSDでは、以下のパッケージをインストールします。
sudo pkg install openssl

証明書を取得する

SSL証明書をコマンドラインで取得するには、OpenSSLコマンドを使うと、簡単に取得して、確認することができます。

% openssl s_client -connect login.yahoo.co.jp:443 -showcerts

login.yahoo.co.jp サーバのSSL証明書を取得しました。
CONNECTED(00000004)
---
Certificate chain
 0 s:/C=JP/ST=Tokyo/L=Minato-ku/O=Yahoo Japan Corporation/OU=l07.login.kks.2010/CN=login.yahoo.co.jp
   i:/C=JP/O=Cybertrust Japan Co., Ltd./CN=Cybertrust Japan Public CA G1
-----BEGIN CERTIFICATE-----
MIIDtDCCAx2gAwIBAgICKE0wDQYJKoZIhvcNAQEFBQAwWjELMAkGA1UEBhMCSlAx
IzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMSYwJAYDVQQDEx1D
eWJlcnRydXN0IEphcGFuIFB1YmxpYyBDQSBHMTAeFw0xMDA4MTIwMTEzMzhaFw0x
MTA4MTgxNDU5MDBaMIGMMQswCQYDVQQGEwJKUDEOMAwGA1UECBMFVG9reW8xEjAQ
BgNVBAcTCU1pbmF0by1rdTEgMB4GA1UEChMXWWFob28gSmFwYW4gQ29ycG9yYXRp
b24xGzAZBgNVBAsTEmwwNy5sb2dpbi5ra3MuMjAxMDEaMBgGA1UEAxMRbG9naW4u
eWFob28uY28uanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALDYRUgIhTP4
025c0BA/uKdJBQLQVqla+S954qFCnB8jCZ4nf6C1OSIZHrEnNlIgfHvXl9AuskuE
iFhJEc2S/IhMsVJ1tGa+vIPSb3Lxxi4Qsq9MO0ekJmWVwUJnyDhmw0H/ccoDnERG
JASAxcDscGCPmOyVXlx3ioy+Y+CqdzsHAgMBAAGjggFUMIIBUDAJBgNVHRMEAjAA
MIG/BgNVHSAEgbcwgbQwgbEGCCqDCIybEQEBMIGkMFcGCCsGAQUFBwICMEsaSUZv
ciBtb3JlIGRldGFpbHMsIHBsZWFzZSB2aXNpdCBvdXIgd2Vic2l0ZSBodHRwczov
L3d3dy5jeWJlcnRydXN0Lm5lLmpwIC4wSQYIKwYBBQUHAgEWPWh0dHBzOi8vd3d3
LmN5YmVydHJ1c3QubmUuanAvU3VyZVNlcnZlci9yZXBvc2l0b3J5L2luZGV4Lmh0
bWwwCwYDVR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBV
BgNVHR8ETjBMMEqgSKBGhkRodHRwOi8vc3VyZXNlcmllcy1jcmwuY3liZXJ0cnVz
dC5uZS5qcC9TdXJlU2VydmVyL2N0anB1YmNhZzEvY2RwLmNybDANBgkqhkiG9w0B
AQUFAAOBgQC0BbNyidWhQb+qc1poaWnsE+ykraRAE90AYhDbw9CR0rtFPBmxMqVy
WLAKzpbszaxenCWY8QTBS87R98VILjl9yiHIbgspuf26swHiWWCvwYqWyJm7T41X
wTIN6xhJ7Le1nscHBfzD+dAgfCeHkHqGJik/ivz2N+07fUDjjlC7Qw==
-----END CERTIFICATE-----
 1 s:/C=JP/O=Cybertrust Japan Co., Ltd./CN=Cybertrust Japan Public CA G1
   i:/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root
-----BEGIN CERTIFICATE-----
MIIDuTCCAyKgAwIBAgIEBydcJTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
b2JhbCBSb290MB4XDTEwMDIyNDIwMDUxMFoXDTE4MDgxMzIzNTkwMFowWjELMAkG
A1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMSYw
JAYDVQQDEx1DeWJlcnRydXN0IEphcGFuIFB1YmxpYyBDQSBHMTCBnzANBgkqhkiG
9w0BAQEFAAOBjQAwgYkCgYEAvr+27eTxTAKYC1p8wWkYIEiSAwgS0lI5z/TMn2zq
Oqv/Rtv03eUx7QGJkKxEdaYxX6NBiTaXq/RDfUwYFV5zyqqvcv9KmMyVJFqNn2eY
xs6h5khR+Ys8tDKC7BWpezWmhz6ELiFLbdF67YzLqOGIDxx1d3lFK3vLb7sIlHX9
WskCAwEAAaOCAW8wggFrMBIGA1UdEwEB/wQIMAYBAf8CAQAwUwYDVR0gBEwwSjBI
BgkrBgEEAbE+AQAwOzA5BggrBgEFBQcCARYtaHR0cDovL2N5YmVydHJ1c3Qub21u
aXJvb3QuY29tL3JlcG9zaXRvcnkuY2ZtMA4GA1UdDwEB/wQEAwIBBjCBiQYDVR0j
BIGBMH+heaR3MHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUgQ29ycG9yYXRp
b24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3SCAgGlMEUGA1UdHwQ+MDww
OqA4oDaGNGh0dHA6Ly93d3cucHVibGljLXRydXN0LmNvbS9jZ2ktYmluL0NSTC8y
MDE4L2NkcC5jcmwwHQYDVR0OBBYEFFqES7uXWOJC4IyqnKm9Ygds5JarMA0GCSqG
SIb3DQEBBQUAA4GBADFT6HyLCfSYdwsHBeQAPvNKrzz+6uCZqk7yzsGUrz3AC2in
/W/oL3BtIlm1fvVixTav6QtMOY+ATqQ3SWl4NTLWtfn5SLyYFvz/Pvrf+Es+ZnJP
Ahz40hL0vUztVrCic8hPgs4NtMSvDkNwbgjU7LDBxH91GJl2fWjSE2w3UjRW
-----END CERTIFICATE-----
---
Server certificate
subject=/C=JP/ST=Tokyo/L=Minato-ku/O=Yahoo Japan Corporation/OU=l07.login.kks.2010/CN=login.yahoo.co.jp
issuer=/C=JP/O=Cybertrust Japan Co., Ltd./CN=Cybertrust Japan Public CA G1
---
No client certificate CA names sent
---
SSL handshake has read 2074 bytes and written 334 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: 6DB9BB24B5A26F6744ABA350B92D6B5AFCFC6EB504E2E82DAA9B242F3C688585
    Session-ID-ctx: 
    Master-Key: 8D1D127E1EA7378B9BE2B9FB3E74BE3B0151719E197C024C4855AE9A5C2E1B44422D1D9528A650219D618426C2F89052
    Key-Arg   : None
    Start Time: 1302420772
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

証明書の内容を確認する

上記の場合、証明書の詳細が表示されないので、SANs(Subject Alternative Names)がどうなってるのか、とかよくわかりません。
そういう場合には、以下のように試します。
openssl s_client -connect サーバ名:ポート番号 -showcerts < /dev/null | openssl x509 -text

実際に試してみましょう。 ヤフー(Yahoo!JAPAN) の証明書を取得してみます。
$ openssl s_client -connect www.yahoo.co.jp:443 -showcerts < /dev/null | openssl x509 -text 
Certificate:
    Data:
	Version: 3 (0x2)
	Serial Number:
	    23:9b:f4:17:72:89:91:81:fa:c5:6c:b1:79:86:d4:5e:46:6b:23:54
    Signature Algorithm: sha256WithRSAEncryption
	Issuer: C=JP, O=Cybertrust Japan Co., Ltd., CN=Cybertrust Japan Public CA G3
	Validity
	    Not Before: Jun 18 06:12:43 2018 GMT
	    Not After : Jul 17 14:59:00 2019 GMT
	Subject: C=JP, ST=Tokyo, L=Chiyoda-ku, O=Yahoo Japan Corporation, OU=EDGE_201806, CN=*.yahoo.co.jp
	Subject Public Key Info:
	    Public Key Algorithm: rsaEncryption
		Public-Key: (2048 bit)
		Modulus:
		    00:b5:d3:6b:0c:e2:e7:18:26:cd:27:69:94:51:16:
		    cf:5a:09:aa:75:54:25:46:49:e4:3d:90:2f:3a:03:
		    e2:65:10:45:23:04:6f:87:7b:39:06:f6:70:55:90:
		    45:a3:24:5f:7b:50:79:28:7a:05:b3:68:2f:50:c8:
		    b1:57:58:4c:7a:97:5c:37:52:c3:ac:2e:91:a6:75:
		    7b:82:1b:0f:99:18:52:e8:fc:a8:55:1c:04:d4:cd:
		    9a:a2:1b:04:cf:f0:c4:c5:99:1c:61:b9:f2:42:c3:
		    bf:35:32:5b:6b:9c:82:c1:6b:f0:ba:0c:de:91:a1:
		    96:79:cc:3a:ad:1c:50:59:c1:7c:fd:07:ac:b3:53:
		    d6:50:25:d7:d2:4f:17:e5:a7:9a:8c:a8:47:f0:2b:
		    9a:3d:b3:9c:b9:81:2c:10:01:ab:ac:c1:95:4a:75:
		    6f:e5:94:27:44:8a:fe:8a:6c:08:c8:f0:41:db:65:
		    22:a2:fc:34:e4:93:cf:ea:39:20:01:78:ef:a4:d9:
		    35:45:30:19:2c:dc:a8:9c:f7:91:59:c5:74:66:67:
		    f9:95:bf:68:e6:44:cd:80:79:ce:8f:b7:cf:c9:91:
		    47:9d:5a:9c:ca:0f:a8:a4:3e:80:f5:60:0a:90:8a:
		    e0:e1:c6:47:a9:64:4d:68:38:bf:23:ad:93:92:e4:
		    88:65
		Exponent: 65537 (0x10001)
	X509v3 extensions:
	    X509v3 Basic Constraints: critical
		CA:FALSE
	    X509v3 Certificate Policies: 
		Policy: 1.2.392.200081.1.1
		  CPS: https://www.cybertrust.ne.jp/ssl/repository/index.html
		Policy: 2.23.140.1.2.2

	    X509v3 Subject Alternative Name: 
		DNS:*.yahoo.co.jp, DNS:*.yimg.jp, DNS:*.c.yimg.jp,
		DNS:*.yahooapis.jp, DNS:*.yahoobox.jp, DNS:*.yoctfs.jp,
		DNS:*.edge.storage-yahoo.jp,
		DNS:*.east.edge.storage-yahoo.jp,
		DNS:*.west.edge.storage-yahoo.jp,
		...省略
	    Authority Information Access: 
		OCSP - URI:http://ocsp.cybertrust.ne.jp/OcspServer
		CA Issuers - URI:http://sureseries-crl.cybertrust.ne.jp/SureServer/ctjpubcag3/ctjpubcag3_sha256.crt

	    X509v3 Key Usage: critical
		Digital Signature, Key Encipherment
	    X509v3 Extended Key Usage: 
		TLS Web Server Authentication, TLS Web Client Authentication
	    X509v3 Authority Key Identifier: 
		keyid:73:A8:08:53:29:B8:15:FB:99:80:E5:C5:37:D8:F8:39:7B:A4:13:06

	    X509v3 CRL Distribution Points: 

		Full Name:
		  URI:http://sureseries-crl.cybertrust.ne.jp/SureServer/ctjpubcag3/cdp.crl

	    X509v3 Subject Key Identifier: 
		37:86:D6:FA:D1:AE:14:F6:53:51:6C:6D:A4:96:CD:BB:D8:A6:68:3F
	    CT Precertificate SCTs: 
		Signed Certificate Timestamp:
		    Version   : v1(0)
		    Log ID    : A4:B9:09:90:B4:18:58:14:87:BB:13:A2:CC:67:70:0A:
				3C:35:98:04:F9:1B:DF:B8:E3:77:CD:0E:C8:0D:DC:10
		    Timestamp : Jun 18 07:40:18.573 2018 GMT
		    Extensions: none
		    Signature : ecdsa-with-SHA256
				30:46:02:21:00:96:DB:FA:58:76:13:96:9A:6A:9F:E4:
				1A:0F:5F:1C:58:38:FD:27:FD:6D:4F:23:B7:9A:93:56:
				F0:63:14:B7:29:02:21:00:DD:90:E6:8B:91:57:30:09:
				7B:E5:63:EE:3A:4E:8F:05:86:9A:20:86:95:11:83:32:
				D6:E4:A7:4F:26:F9:82:8D
		Signed Certificate Timestamp:
		    Version   : v1(0)
		    Log ID    : EE:4B:BD:B7:75:CE:60:BA:E1:42:69:1F:AB:E1:9E:66:
				A3:0F:7E:5F:B0:72:D8:83:00:C4:7B:89:7A:A8:FD:CB
		    Timestamp : Jun 18 07:40:20.700 2018 GMT
		    Extensions: none
		    Signature : ecdsa-with-SHA256
				30:44:02:20:26:43:8D:1B:04:CE:EC:65:52:12:A9:24:
				0D:D0:AC:3C:73:14:3F:AA:79:D3:72:5A:FB:17:7B:45:
				39:05:6B:E6:02:20:23:1F:CC:CD:D4:C9:6E:0E:07:39:
				7B:A0:86:A7:CA:E2:F9:1E:9F:F3:3D:FA:E5:D7:9E:B5:
				2B:7D:31:3D:A3:BC
		Signed Certificate Timestamp:
		    Version   : v1(0)
		    Log ID    : BB:D9:DF:BC:1F:8A:71:B5:93:94:23:97:AA:92:7B:47:
				38:57:95:0A:AB:52:E8:1A:90:96:64:36:8E:1E:D1:85
		    Timestamp : Jun 18 07:40:22.217 2018 GMT
		    Extensions: none
		    Signature : ecdsa-with-SHA256
				30:45:02:21:00:EA:37:FD:9B:62:BE:DE:22:AA:43:D7:
				78:A8:14:50:FA:EA:41:AC:6A:2F:B3:21:51:E9:5B:AD:
				29:05:75:61:D1:02:20:74:FB:08:37:EA:91:B2:A4:35:
				A7:6F:50:EC:5F:D6:96:A2:C9:71:98:53:ED:75:37:C0:
				D6:3A:58:38:92:6B:1E
		Signed Certificate Timestamp:
		    Version   : v1(0)
		    Log ID    : 56:14:06:9A:2F:D7:C2:EC:D3:F5:E1:BD:44:B2:3E:C7:
				46:76:B9:BC:99:11:5C:C0:EF:94:98:55:D6:89:D0:DD
		    Timestamp : Jun 18 07:40:23.277 2018 GMT
		    Extensions: none
		    Signature : ecdsa-with-SHA256
				30:44:02:20:68:24:78:12:CC:7C:31:5E:BF:9F:A4:CD:
				4E:F3:52:09:B6:13:39:FB:59:9E:37:4C:24:1B:CE:BD:
				0B:3C:2C:38:02:20:66:DB:FA:DA:77:38:FA:FF:F3:01:
				EF:F2:98:82:9F:06:D0:A7:4E:75:1B:C2:90:0E:46:2D:
				39:F5:FA:B5:F5:12
    Signature Algorithm: sha256WithRSAEncryption
	 4f:27:a4:50:9d:4c:27:d2:58:af:10:5d:6a:d4:cc:66:60:8e:
	 51:80:f7:31:d9:b7:0a:de:ba:c5:5f:b1:73:9c:50:1a:bb:da:
	 b2:b2:a2:5f:70:3f:13:05:bf:19:75:0a:8d:4c:5e:35:21:e5:
	 d1:eb:fe:41:37:0f:46:e1:95:b2:4b:76:6b:23:99:d6:1b:4c:
	 ee:f7:bc:52:aa:f8:44:1d:5c:18:4a:e0:a6:c4:58:6f:86:c4:
	 4b:55:73:89:07:61:de:0a:bd:09:aa:74:ae:09:2b:1c:a5:0b:
	 b2:bc:cd:2c:e8:6b:6f:a2:67:8a:7b:92:19:d3:02:d2:ad:f3:
	 39:1a:df:bf:ad:64:70:80:8a:f9:02:0e:72:b5:b4:7c:60:43:
	 db:f2:56:36:b2:b2:a1:de:3e:b3:f0:6b:f3:8b:a7:a9:07:63:
	 a9:40:23:67:6c:68:58:04:c2:78:76:76:b2:39:87:29:ef:32:
	 1b:c3:57:54:1f:f6:31:3c:cd:0a:fc:92:b6:f7:95:37:46:70:
	 31:8e:ec:83:1f:b8:ae:e5:14:8d:a7:e9:63:ab:8b:af:1e:bf:
	 02:b6:2b:db:eb:0a:74:cd:f2:25:e6:10:7a:28:61:9f:75:42:
	 76:df:fd:a9:17:4d:7b:e3:d9:7b:33:f4:92:9a:f2:bc:0b:5f:
	 0f:31:2f:bd
-----BEGIN CERTIFICATE-----
省略
-----END CERTIFICATE-----

SANsを取得する方法

SANsとは、Subject Alternative Namesの略です。SANs オプションを利用した証明書は、複数のコモンネームをサポートします。
SANs オプションを利用すると複数のドメインを1つの証明書で扱えるようになります。たとえば、 www.hoge.com と login.hoge.com と hoge-img.com の3つのドメインを1つの証明書で扱えます。サブドメインなどのFQDNをたくさん利用しているウェブ事業者や CDN (コンテンツデリバリーネットワーク)の業者がSANs オプションを利用した証明書と利用しています。

上記に掲載したヤフーの証明書の内容の一部を抜粋しました。

SANs は、 X509v3 Subject Alternative Name に記載されます。

X509v3 Subject Alternative Name:
	DNS:*.yahoo.co.jp, DNS:*.yimg.jp, DNS:*.c.yimg.jp,
	DNS:*.yahooapis.jp, DNS:*.yahoobox.jp, DNS:*.yoctfs.jp,
	DNS:*.edge.storage-yahoo.jp,
	DNS:*.east.edge.storage-yahoo.jp,
	DNS:*.west.edge.storage-yahoo.jp,

以下のコマンドは、証明書から SANs を取り出す例です。
SANsに指定されているFQDNは、X509v3 Subject Alternative Name の中に DNS: で始まる文字列として格納されているため、 DNS でフィルター(grep)することで簡単に抽出できます。

$ openssl s_client -connect www.yahoo.co.jp:443 -showcerts < /dev/null | openssl x509 -text |fgrep DNS > dns.txt
$ cat dns.txt
	DNS:*.yahoo.co.jp, DNS:*.yimg.jp, DNS:*.c.yimg.jp,
	DNS:*.yahooapis.jp, DNS:*.yahoobox.jp, DNS:*.yoctfs.jp,
	DNS:*.edge.storage-yahoo.jp, DNS:*.east.edge.storage-yahoo.jp,
	DNS:*.west.edge.storage-yahoo.jp,
	DNS:*.global.edge.storage-yahoo.jp,
	DNS:*.east.edge.storage-yahoobox.jp,
	DNS:*.west.edge.storage-yahoobox.jp, DNS:*.listing.yahoo.co.jp,
	DNS:compass.ymobile.yahoo.co.jp, DNS:*.chiebukuro.yahoo.co.jp,
	DNS:*.finance.yahoo.co.jp, DNS:*.auctions.yahoo.co.jp,
	DNS:*.shopping.yahoo.co.jp, DNS:*.travel.yahoo.co.jp,
	DNS:*.news.yahoo.co.jp, DNS:*.pmx.proatlas.net,
	DNS:yahoo.co.jp, DNS:add.dir.yahoo.co.jp, DNS:map.alpsmap.jp,
	DNS:ssl.map.srv.yimg.jp, DNS:ssl.api.olp.yahooapis.jp,
	DNS:subscription.push.yahooapis.jp,
	DNS:auth.carnavi.yahooapis.jp, DNS:vics.carnavi.yahooapis.jp,
	DNS:cm.froma.yahoo.co.jp, DNS:cgi2.r-agent.yahoo.co.jp,
	DNS:info.hatalike.yahoo.co.jp, DNS:movie.chocotle.yahoo.co.jp,
	DNS:opetool.bylines.news.yahoo.co.jp,
	DNS:tool.bylines.news.yahoo.co.jp, DNS:poiedit.map.yahoo.co.jp,
	DNS:*.ane.yahoo.co.jp, DNS:pf.carnavi.yahooapis.jp,
	DNS:rf.carnavi.yahooapis.jp, DNS:assist.search.yahooapis.jp,
	DNS:suggest.search.yahooapis.jp, DNS:arc.help.yahoo.co.jp,
	DNS:personalapp.news.yahooapis.jp, DNS:cksync.pdsp.yahoo.co.jp,
	DNS:suggest.auctions.yahooapis.jp,
	DNS:ssl-tools.kainavi.search.yahoo.co.jp,
	DNS:yoshimoto.gyao.yahoo.co.jp, DNS:lyrics.gyao.yahoo.co.jp,
	DNS:m.gyao.yahoo.co.jp, DNS:im.ov.yahoo.co.jp,
	DNS:xml.listing.yahoo.co.jp, DNS:app.news.yahooapis.jp,
	DNS:feedback.premiads.yahoo.co.jp,
	DNS:feedback.advertising.yahoo.co.jp,
	DNS:feedback.promotionalads.yahoo.co.jp,
	DNS:frame.games.yahoo.co.jp,
	DNS:sandbox.frame.games.yahoo.co.jp, DNS:*.yjtag.yahoo.co.jp,
	DNS:*.shopping.c.yimg.jp, DNS:*.yjtag.jp,
	DNS:*.ys-insurance.co.jp, DNS:www.yjcard.co.jp,
	DNS:www.yahoo-help.jp, DNS:m.yahoo-help.jp,
	DNS:shopping.geocities.jp, DNS:*.xml.listing.yahoo.co.jp,
	DNS:app.commerce21.co.jp, DNS:biz.marketing.yahoo.co.jp,
	DNS:portal.yadui.business.yahoo.co.jp

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー