hack のためのネタ帳, etc,,,

自作の ieserver.net 更新スクリプトが動かなくなったので調査してみたところ、wget が証明書の検証エラーで繋がらない。
$ wget -O/dev/null https://ieserver.net/cgi-bin/dip.cgi
--2017-01-09 01:19:36--  https://ieserver.net/cgi-bin/dip.cgi
ieserver.net (ieserver.net) をDNSに問いあわせています... 61.197.187.238
ieserver.net (ieserver.net)|61.197.187.238|:443 に接続しています... 接続しました。
エラー: ieserver.net の証明書(発行者: `CN=RapidSSL SHA256 CA,O=GeoTrust Inc.,C=US')の検証に失敗しました:
  発行者の権限を検証できませんでした。
ieserver.net に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。
ところが、Firefox だと繋がるという謎な状態。
しばらく悩んだ末、原因は ieserver.net の 証明書が 2016-12-06 に更新されているのだが、web サーバーに新しい SSL 証明書を設定する際、中間証明書の設定を忘れているに違いないという結論に達した。
まず、以下のように openssl s_client に -showcerts オプションを付けても、RapidSSL SHA256 CA の中間証明書が落ちてこない。
$ openssl s_client -showcerts -connect ieserver.net:443
CONNECTED(00000003)
depth=0 CN = ieserver.net
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = ieserver.net
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/CN=ieserver.net
   i:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA
-----BEGIN CERTIFICATE-----
MIIF6DCCBNCgAwIBAgIQQCHrGozgnYAAOe+RTzRhxTANBgkqhkiG9w0BAQsFADBC
MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMS
UmFwaWRTU0wgU0hBMjU2IENBMB4XDTE2MTIwNjAwMDAwMFoXDTE5MDEwNTIzNTk1
OVowFzEVMBMGA1UEAwwMaWVzZXJ2ZXIubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAtvfFHemTGFnSbSVB0RXxP6d7SLQIpyeyTaCmo+wmoYL3db/s
a+0Wlmo9/laXyEkCeVdZ+CejcEssLAgJYQHdljipdKK9DrXnQ++wpQn8hMPdSJtG
SYkLt1/qTB89QOz/pQiTZ/qNqu1BBU+RD48F1l+vY4f86BNoLwUGLbk9/5r8unX9
57qOjI0pEOXP+85TnruQ+9y8MLJoCv3laE7F10FdWVf+9imqt2sOk1A87zM5zkRu
Y7UslAukf8Wp1DsCgCgvSZpzhn4+mIJS+RLHsFQQ/D8FfZczgTTGE3nXZ5PONYzs
MPoUCJWwb8o0YhgIRs2Ly9DwxLE0znfFjmJCEQIDAQABo4IDAzCCAv8wKQYDVR0R
BCIwIIIMaWVzZXJ2ZXIubmV0ghB3d3cuaWVzZXJ2ZXIubmV0MAkGA1UdEwQCMAAw
KwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL2dwLnN5bWNiLmNvbS9ncC5jcmwwbwYD
VR0gBGgwZjBkBgZngQwBAgEwWjAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cucmFw
aWRzc2wuY29tL2xlZ2FsMCwGCCsGAQUFBwICMCAMHmh0dHBzOi8vd3d3LnJhcGlk
c3NsLmNvbS9sZWdhbDAfBgNVHSMEGDAWgBSXwidQnsLJ7AyIMsh8reKmAU/abzAO
BgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMFcG
CCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDovL2dwLnN5bWNkLmNvbTAm
BggrBgEFBQcwAoYaaHR0cDovL2dwLnN5bWNiLmNvbS9ncC5jcnQwggF+BgorBgEE
AdZ5AgQCBIIBbgSCAWoBaAB2AN3rHSt6DU+mIIuBrYFocH4ujp0B1VyIjT0RxM22
7L7MAAABWNHpELkAAAQDAEcwRQIgKGV4wlzSf0FxLCojySGyibY7pOUbMDVcXqeq
uKX/BycCIQCYeukOdj5C4k3/EwzI+3EkoMt9Mn2ZBb6S3Q3+aVohngB3AO5Lvbd1
zmC64UJpH6vhnmajD35fsHLYgwDEe4l6qP3LAAABWNHpEQAAAAQDAEgwRgIhAJc9
JxB8iB7AMwpDIJLZI4c21tnOZwij0u2TG/W//4NYAiEAiChW1L1xVE3Bipw2XEH9
HZpmiZicdoFITVhh0bd7w7kAdQC8eOHfxfY8aEZJM02hD6FfCXlpIAnAgbTz9pF/
Ptm4pQAAAVjR6RGhAAAEAwBGMEQCICGGt20aJa4Uyp7MKWtXvtmT2zxwmLGv/grs
MmaLcpMTAiB+tGhvefc+jrQRkXAVZ14Gn72rHdVtvriMS+i4TKWqEjANBgkqhkiG
9w0BAQsFAAOCAQEAPJYaKIg+z7/kA3Fk7jLgdB/CSYi8nDb5n/EVv7KENrCYeH9o
wU9JEb5uOhhs0XZwDrM0Nvd53MxeKn1RHM1+5XtUQ6s6wSGLu/1MHqyIcPRPm6hl
g/YjMDc7XycKVUxKxWlcMAAOUxlxHJifsIxdKzq9lmE2PH9QeogkdBbBNt/Brxl0
VK2SFzW1WcuFVf3TiarJ9XTj7XJLa3n1ypjxWdTAcyZ86ZHja5oNkVTT8DZJ1jDA
pgFSeJNgRc8lixtHCPeDPuIaAhg5QWHAQ149bTmHojtF8Xqxct9DcADSc95z0XEE
3X8eTeIAsaInfwYQaRODE6TFZf0P3Tu29FkbOg==
-----END CERTIFICATE-----
---
Server certificate
subject=/CN=ieserver.net
issuer=/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA
---
No client certificate CA names sent
---
SSL handshake has read 1666 bytes and written 619 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-SHA
    Session-ID: 3D0343F209CC87A576F6EFC83C796F27F3E7C2B309F2AD89B496958F87D846EC
    Session-ID-ctx: 
    Master-Key: 53B4E40CD3EBB6832B9507F60A0D47D56F4A9D6CC453A9F5433EA0C2DFE6A87DC95EB724237CEFD88FC52F9457685685
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1483889605
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
DONE
一方、正しく中間証明書が設定してある場合、例えば Google 先生を例に取ってみると、以下のように中間証明書が落ちてくる。
$ openssl s_client -showcerts -connect google.com:443
CONNECTED(00000003)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = *.google.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com
   i:/C=US/O=Google Inc/CN=Google Internet Authority G2
-----BEGIN CERTIFICATE-----
MIIH0jCCBrqgAwIBAgIIVnW85e/YrWkwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UE
BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl
cm5ldCBBdXRob3JpdHkgRzIwHhcNMTYxMjE1MTM0ODI3WhcNMTcwMzA5MTMzNTAw
WjBmMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN
TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEVMBMGA1UEAwwMKi5n
b29nbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqHGBLkAX
plf+b9uVIVzWJCZUmCpI61KORGZuCvejve2gAGR5F9wAYkK/VF+mcP6hvj3F8hDo
HD++UKwXkMN8gOaDMyTJqFgFvZWbxQ1NG/lUnR2eFjSdnxktbNBlbbbXmqYJu1yN
34J7i45FCkp8n6yc+4xn41dadf4188i3g/BlaTDeJmHsEQpYNrScrr2KeUyx8xGr
fOEDKPOGGmxVmWxjr80+A7MubRoNskxFBHTu0cUUv0KPopaqAIjxM2OtNgRMB6Sf
C+hWgWckIkU4yzPNxry743fpXu2DQFyzO+H3eqATYHMIGzWvajz+qVrdW4TifyP8
5VqnjhFCxGYtQQIDAQABo4IEnzCCBJswHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsG
AQUFBwMCMIIDawYDVR0RBIIDYjCCA16CDCouZ29vZ2xlLmNvbYINKi5hbmRyb2lk
LmNvbYIWKi5hcHBlbmdpbmUuZ29vZ2xlLmNvbYISKi5jbG91ZC5nb29nbGUuY29t
ghYqLmdvb2dsZS1hbmFseXRpY3MuY29tggsqLmdvb2dsZS5jYYILKi5nb29nbGUu
Y2yCDiouZ29vZ2xlLmNvLmlugg4qLmdvb2dsZS5jby5qcIIOKi5nb29nbGUuY28u
dWuCDyouZ29vZ2xlLmNvbS5hcoIPKi5nb29nbGUuY29tLmF1gg8qLmdvb2dsZS5j
b20uYnKCDyouZ29vZ2xlLmNvbS5jb4IPKi5nb29nbGUuY29tLm14gg8qLmdvb2ds
ZS5jb20udHKCDyouZ29vZ2xlLmNvbS52boILKi5nb29nbGUuZGWCCyouZ29vZ2xl
LmVzggsqLmdvb2dsZS5mcoILKi5nb29nbGUuaHWCCyouZ29vZ2xlLml0ggsqLmdv
b2dsZS5ubIILKi5nb29nbGUucGyCCyouZ29vZ2xlLnB0ghIqLmdvb2dsZWFkYXBp
cy5jb22CDyouZ29vZ2xlYXBpcy5jboIUKi5nb29nbGVjb21tZXJjZS5jb22CESou
Z29vZ2xldmlkZW8uY29tggwqLmdzdGF0aWMuY26CDSouZ3N0YXRpYy5jb22CCiou
Z3Z0MS5jb22CCiouZ3Z0Mi5jb22CFCoubWV0cmljLmdzdGF0aWMuY29tggwqLnVy
Y2hpbi5jb22CECoudXJsLmdvb2dsZS5jb22CFioueW91dHViZS1ub2Nvb2tpZS5j
b22CDSoueW91dHViZS5jb22CFioueW91dHViZWVkdWNhdGlvbi5jb22CCyoueXRp
bWcuY29tghphbmRyb2lkLmNsaWVudHMuZ29vZ2xlLmNvbYILYW5kcm9pZC5jb22C
G2RldmVsb3Blci5hbmRyb2lkLmdvb2dsZS5jboIEZy5jb4IGZ29vLmdsghRnb29n
bGUtYW5hbHl0aWNzLmNvbYIKZ29vZ2xlLmNvbYISZ29vZ2xlY29tbWVyY2UuY29t
ggp1cmNoaW4uY29tggp3d3cuZ29vLmdsggh5b3V0dS5iZYILeW91dHViZS5jb22C
FHlvdXR1YmVlZHVjYXRpb24uY29tMGgGCCsGAQUFBwEBBFwwWjArBggrBgEFBQcw
AoYfaHR0cDovL3BraS5nb29nbGUuY29tL0dJQUcyLmNydDArBggrBgEFBQcwAYYf
aHR0cDovL2NsaWVudHMxLmdvb2dsZS5jb20vb2NzcDAdBgNVHQ4EFgQUz61JUCag
/oyz2ifZJB5pEL9wWHswDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2
aLV29YG2u2IaulqBLzAhBgNVHSAEGjAYMAwGCisGAQQB1nkCBQEwCAYGZ4EMAQIC
MDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9wa2kuZ29vZ2xlLmNvbS9HSUFHMi5j
cmwwDQYJKoZIhvcNAQELBQADggEBAFk/zR3rf5g59BeU4VZ8fSc/cSQVtk+EjONY
b3rM8+Xqid9e/ishcELixKDQwNlsm0sppuEkG3fb9DQZgrdvRXG+66YsQWQkeVdr
LUvwRzNrXGh+R7B0fFsd6ASwuRv2u1KDC0KwGrY2x6GXEIfItvs9Rtwb2zoNpndc
9TyOGr5zgxWRIRrYibQsBe2xrBWBFlp/nBsJjmA/aHwy27X9NAXaCT7LuDAOZ9T1
+P2wk5nF8yzC+A4MBQw7CUIHgjQ0r+SJNqmcO6vMRvOdFGi7kICSnqPccNQ0X/86
E2vlaYBKyg4A+NuV4hSxAmxza3j1cB+jkz5muR3sgVOE9ZenfzY=
-----END CERTIFICATE-----
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
-----BEGIN CERTIFICATE-----
MIID8DCCAtigAwIBAgIDAjqSMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT
MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
YWwgQ0EwHhcNMTUwNDAxMDAwMDAwWhcNMTcxMjMxMjM1OTU5WjBJMQswCQYDVQQG
EwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVy
bmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NP
VaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtv
h8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rE
ahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZ
EASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXC
DTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB5zCB5DAfBgNVHSMEGDAWgBTAephojYn7
qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wDgYD
VR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDov
L2cuc3ltY2QuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwNQYDVR0fBC4wLDAqoCig
JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMBcGA1UdIAQQ
MA4wDAYKKwYBBAHWeQIFATANBgkqhkiG9w0BAQsFAAOCAQEACE4Ep4B/EBZDXgKt
10KA9LCO0q6z6xF9kIQYfeeQFftJf6iZBZG7esnWPDcYCZq2x5IgBzUzCeQoY3IN
tOAynIeYxBt2iWfBUFiwE6oTGhsypb7qEZVMSGNJ6ZldIDfM/ippURaVS6neSYLA
EHD0LPPsvCQk0E6spdleHm2SwaesSDWB+eXknGVpzYekQVA/LlelkVESWA6MCaGs
eqQSpSfzmhCXfVUDBvdmWF9fZOGrXW2lOUh1mEwpWjqN0yvKnFUEv/TmFNWArCbt
F4mmk2xcpMy48GaOZON9muIAs0nH5Aqq3VuDx3CQRk6+0NtZlmwu9RY23nHMAcIS
wSHGFg==
-----END CERTIFICATE-----
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
-----BEGIN CERTIFICATE-----
MIIDfTCCAuagAwIBAgIDErvmMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT
MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0
aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDIwNTIxMDQwMDAwWhcNMTgwODIxMDQwMDAw
WjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UE
AxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9m
OSm9BXiLnTjoBbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIu
T8rxh0PBFpVXLVDviS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6c
JmTM386DGXHKTubU1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmR
Cw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5asz
PeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo4HwMIHtMB8GA1UdIwQYMBaAFEjm
aPkr0rKV10fYIyAQTzOYkJ/UMB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrM
TjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjA6BgNVHR8EMzAxMC+g
LaArhilodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9jcmxzL3NlY3VyZWNhLmNybDBO
BgNVHSAERzBFMEMGBFUdIAAwOzA5BggrBgEFBQcCARYtaHR0cHM6Ly93d3cuZ2Vv
dHJ1c3QuY29tL3Jlc291cmNlcy9yZXBvc2l0b3J5MA0GCSqGSIb3DQEBBQUAA4GB
AHbhEm5OSxYShjAGsoEIz/AIx8dxfmbuwu3UOx//8PDITtZDOLC5MH0Y0FWDomrL
NhGc6Ehmo21/uBPUR/6LWlxz/K7ZGzIZOKuXNBSqltLroxwUCEm2u+WR74M26x1W
b8ravHNjkOR/ez4iyz0H7V84dJzjA1BOoa+Y7mHyhD8S
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com
issuer=/C=US/O=Google Inc/CN=Google Internet Authority G2
---
No client certificate CA names sent
Peer signing digest: SHA256
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 4577 bytes and written 431 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: 5071A338B0FC172CDEA4B15C8FFE288507CF947941948E8363225A7DCF6546B6
    Session-ID-ctx: 
    Master-Key: A86059EF5F4E8629F284539D408C3B993C329157B0C7D192CF0C3C72E67869FE58013532115FE602EC73A0E088093843
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 100800 (seconds)
    TLS session ticket:
    0000 - f7 66 b9 1d aa cd 34 cb-48 c8 78 8c b8 2f 93 a7   .f....4.H.x../..
    0010 - c0 c5 09 a2 d5 6f c8 95-92 77 74 51 66 f9 01 ac   .....o...wtQf...
    0020 - 8c d0 d5 ef a5 50 89 f8-10 2a 69 cc ca 4f 3b c3   .....P...*i..O;.
    0030 - c7 4e c5 70 d8 00 bb d1-90 be 33 75 3b 96 7c 91   .N.p......3u;.|.
    0040 - b9 6e 53 e1 18 48 4e 94-01 cb c1 9c ab 5e c4 14   .nS..HN......^..
    0050 - fe 48 24 95 02 be 7d 85-b5 5c 8d 45 a3 a8 d5 e2   .H$...}..\.E....
    0060 - 1f 7a 95 ff 7f 6f 2f bb-13 db 1d fd a2 17 70 2c   .z...o/.......p,
    0070 - 0a 32 b4 70 98 64 93 a7-53 fd d6 f1 98 7d 2c a7   .2.p.d..S....},.
    0080 - 5f c5 9d 1c 98 6f 92 4f-92 32 62 76 f9 52 3a 92   _....o.O.2bv.R:.
    0090 - 08 c3 14 c5 86 63 ac 2d-bc 90 c3 1c 6d 77 8e c3   .....c.-....mw..
    00a0 - eb cd b2 59                                       ...Y

    Start Time: 1483889807
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
DONE
と言う事で、中間証明書の設定漏れであろうと結論付けた。

あと、地味に気になったのが TLSv1 で RC4-SHA な点。これって結構弱いのでは???
Google 先生は TLSv1.2 で ECDHE-RSA-AES128-GCM-SHA256。流石だ。
で、謎だったのは Firefox なのだが、どうやら Firefox は取得済みの中間証明書を ~/.mozilla/firefox/<profile>/cert8.db に片っ端からストックしているらしく、もしも今見ているサイトから中間証明書を取得出来なかった場合でも、他のサイトで取得済みの中間証明書があれば、それで代替してくれているらしいという結論に達した
まず、「設定」→「詳細」→「証明書」→「証明書を表示」として「証明書マネージャー」を開き「認証局証明書」のタブを見ると、「セキュリティデバイス」の列が「Builtin Object Token」の物と「Software Secrity Device」の物の2種類があり、「RapidSSL SHA256 CA」は「Software Secrity Device」に分類されていた。この分類がどういう違いなのかとしばらく悩んだのだが、「設定」→「詳細」→「証明書」→「セキュリティデバイス」として、「デバイスマネージャー」を開くと「Builtin Roots Module」のパスが /usr/lib/firefox/libnssckbi.so になってて、その下に「Builtin Object Token」がぶら下がっていた。一方「Software Security Device」は「NSS Internal PKCS #11 Module」の下にぶら下がっていた。ただしパスは null になっていてどこにあるのか分からなかった。

そこで以下のようにして検索してみたところ cert8.db が引っかかった。
grep -Rls "RapidSSL SHA256 CA" ~/.mozilla
/home/kou/.mozilla/firefox/m7hn421w.default/cert8.db
/home/kou/.mozilla/firefox/m7hn421w.default/sessions/backup-7.session
/home/kou/.mozilla/firefox/m7hn421w.default/places.sqlite
/home/kou/.mozilla/firefox/m7hn421w.default/sessionstore-backups/recovery.js
/home/kou/.mozilla/firefox/m7hn421w.default/sessionstore-backups/recovery.bak
ここで、~/.mozilla を削除して Firefox を起動してみたところ https://ieserver.net/ を表示すると証明書のエラーになったため、これに違いないという結論に至った。
wget に --no-check-certificate を付けるという方法もあるんだけど、検証を省くのはセキュリティ的にありえないので却下の方向で。
と言う事で、ieserver.net 側の対応を待たずに解決する方法としては、Firefox から RapidSSL SHA256 CA による中間証明書をエクスポートして openssl に以下のようにして食わせて見たところ、検証に成功。
$ openssl s_client -CAfile RapidSSLSHA256CA.crt -connect ieserver.net:443CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = GeoTrust Inc., CN = RapidSSL SHA256 CA
verify return:1
depth=0 CN = ieserver.net
verify return:1
---
Certificate chain
 0 s:/CN=ieserver.net
   i:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIF6DCCBNCgAwIBAgIQQCHrGozgnYAAOe+RTzRhxTANBgkqhkiG9w0BAQsFADBC
MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMS
UmFwaWRTU0wgU0hBMjU2IENBMB4XDTE2MTIwNjAwMDAwMFoXDTE5MDEwNTIzNTk1
OVowFzEVMBMGA1UEAwwMaWVzZXJ2ZXIubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAtvfFHemTGFnSbSVB0RXxP6d7SLQIpyeyTaCmo+wmoYL3db/s
a+0Wlmo9/laXyEkCeVdZ+CejcEssLAgJYQHdljipdKK9DrXnQ++wpQn8hMPdSJtG
SYkLt1/qTB89QOz/pQiTZ/qNqu1BBU+RD48F1l+vY4f86BNoLwUGLbk9/5r8unX9
57qOjI0pEOXP+85TnruQ+9y8MLJoCv3laE7F10FdWVf+9imqt2sOk1A87zM5zkRu
Y7UslAukf8Wp1DsCgCgvSZpzhn4+mIJS+RLHsFQQ/D8FfZczgTTGE3nXZ5PONYzs
MPoUCJWwb8o0YhgIRs2Ly9DwxLE0znfFjmJCEQIDAQABo4IDAzCCAv8wKQYDVR0R
BCIwIIIMaWVzZXJ2ZXIubmV0ghB3d3cuaWVzZXJ2ZXIubmV0MAkGA1UdEwQCMAAw
KwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL2dwLnN5bWNiLmNvbS9ncC5jcmwwbwYD
VR0gBGgwZjBkBgZngQwBAgEwWjAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cucmFw
aWRzc2wuY29tL2xlZ2FsMCwGCCsGAQUFBwICMCAMHmh0dHBzOi8vd3d3LnJhcGlk
c3NsLmNvbS9sZWdhbDAfBgNVHSMEGDAWgBSXwidQnsLJ7AyIMsh8reKmAU/abzAO
BgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMFcG
CCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDovL2dwLnN5bWNkLmNvbTAm
BggrBgEFBQcwAoYaaHR0cDovL2dwLnN5bWNiLmNvbS9ncC5jcnQwggF+BgorBgEE
AdZ5AgQCBIIBbgSCAWoBaAB2AN3rHSt6DU+mIIuBrYFocH4ujp0B1VyIjT0RxM22
7L7MAAABWNHpELkAAAQDAEcwRQIgKGV4wlzSf0FxLCojySGyibY7pOUbMDVcXqeq
uKX/BycCIQCYeukOdj5C4k3/EwzI+3EkoMt9Mn2ZBb6S3Q3+aVohngB3AO5Lvbd1
zmC64UJpH6vhnmajD35fsHLYgwDEe4l6qP3LAAABWNHpEQAAAAQDAEgwRgIhAJc9
JxB8iB7AMwpDIJLZI4c21tnOZwij0u2TG/W//4NYAiEAiChW1L1xVE3Bipw2XEH9
HZpmiZicdoFITVhh0bd7w7kAdQC8eOHfxfY8aEZJM02hD6FfCXlpIAnAgbTz9pF/
Ptm4pQAAAVjR6RGhAAAEAwBGMEQCICGGt20aJa4Uyp7MKWtXvtmT2zxwmLGv/grs
MmaLcpMTAiB+tGhvefc+jrQRkXAVZ14Gn72rHdVtvriMS+i4TKWqEjANBgkqhkiG
9w0BAQsFAAOCAQEAPJYaKIg+z7/kA3Fk7jLgdB/CSYi8nDb5n/EVv7KENrCYeH9o
wU9JEb5uOhhs0XZwDrM0Nvd53MxeKn1RHM1+5XtUQ6s6wSGLu/1MHqyIcPRPm6hl
g/YjMDc7XycKVUxKxWlcMAAOUxlxHJifsIxdKzq9lmE2PH9QeogkdBbBNt/Brxl0
VK2SFzW1WcuFVf3TiarJ9XTj7XJLa3n1ypjxWdTAcyZ86ZHja5oNkVTT8DZJ1jDA
pgFSeJNgRc8lixtHCPeDPuIaAhg5QWHAQ149bTmHojtF8Xqxct9DcADSc95z0XEE
3X8eTeIAsaInfwYQaRODE6TFZf0P3Tu29FkbOg==
-----END CERTIFICATE-----
subject=/CN=ieserver.net
issuer=/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA
---
No client certificate CA names sent
---
SSL handshake has read 1666 bytes and written 619 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-SHA
    Session-ID: E845CF9D3BBB17914CB819E8AFE4A3E4C3048B0D7D594A92BC32C9FCBA1DB12E
    Session-ID-ctx: 
    Master-Key: 8AF161EA3813780D131C02731EE2D30AD18CDA0CD5D69C84C295B8C00E2FC6DE466EB20AC510FB5FB9FA2B5F4DE069F3
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1483892176
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
DONE
更に wget についても同様にして中間証明書を食わせてみたところ、以下のように接続に成功した。
$ wget -O/dev/null --ca-certificate=RapidSSLSHA256CA.crt https://ieserver.net/cgi-bin/dip.cgi
--2017-01-09 01:20:03--  https://ieserver.net/cgi-bin/dip.cgi
ieserver.net (ieserver.net) をDNSに問いあわせています... 61.197.187.238
ieserver.net (ieserver.net)|61.197.187.238|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`/dev/null' に保存中

/dev/null               [ <=>                ]    1009  --.-KB/s    in 0s      

2017-01-09 01:20:19 (79.9 MB/s) - `/dev/null' へ保存終了 [1009]
問題は、これをいちいち食わせるのかって点。
/usr/local/share/ca-certificates に放り込んで update-ca-certificate かけるって手もあって、万が一不測の事態が起きた場合でも、多分失効リストは拾ってくれるんじゃないかと思うのだが、パッケージシステムの管理外にシステムグローバルな証明書置くのはどうも気持ち悪い。
どうしたものか。
さて ieserver.net の中の人に知らせたいのだが、「利用者の広場(掲示板)」は SPAM を苦にして閉鎖中 orz。
仕方がないのでトップページにあるメアド2つに不具合報告を投げておいたのだが、件名に不具合の概要を書いて本文は空にせよと指示があったので、SPAM フィルターでゴミ箱行きにならないかが不安だ。
と思っていたら、1分と経たずに返信があった。
何という杞憂!
何という返信速度!
因みに今午前2時回ってるんですけど(^^;;;)
担当者様、ありがとうございますm(_ _)m

コメントをかく


画像に記載されている文字を下のフォームに入力してください。

「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

編集にはIDが必要です