When a website asking for sensitive information. We have two questions:
- should we trust this organization?
- are we dealing with the organization's website it is claim to be?
There are tools help us to find out, nslookup can translate the url to ip address of the host's IP.
openssl s_client can connect to the port our browser uses and verify the host's certificate is valid.
demoAdmin@deomPC ~ $ nslookup www.bankofamerica.com Non-authoritative answer: Server: Wireless_Broadband_Router.home Address: 192.168.2.1 Name: wwwui.ecglb.bac.com Address: 171.161.207.100 Aliases: www.bankofamerica.com demoAdmin@deomPC ~ $ nslookup -type=ns www.bankofamerica.com Non-authoritative answer: Server: Wireless_Broadband_Router.home Address: 192.168.2.1 www.bankofamerica.com canonical name = wwwui.ecglb.bac.com ecglb.bac.com primary name server = ns1.ecglb.bac.com responsible mail addr = hostmaster.bankofamerica.com serial = 337 refresh = 3600 (1 hour) retry = 7200 (2 hours) expire = 1209600 (14 days) default TTL = 30 (30 secs) demoAdmin@deomPC ~ $ nslookup wwwui.ecglb.bac.com ns1.ecglb.bac.com Server: UnKnown Address: 171.162.17.30 Name: wwwui.ecglb.bac.com Address: 171.161.207.100 demoAdmin@deomPC ~ $ openssl s_client -connect 171.161.207.100:443 -showcerts -verify 5 verify depth is 5 CONNECTED(00000003) depth=2 C = US, O = "VeriSign, Inc.", OU = VeriSign Trust Network, OU = "(c) 2006 VeriSign, Inc. - For authorized use only", CN = VeriSign Class 3 Public Primary Certification Authority - G5 verify return:1 depth=1 C = US, O = Symantec Corporation, OU = Symantec Trust Network, CN = Symantec Class 3 EV SSL CA - G3 verify return:1 depth=0 jurisdictionC = US, jurisdictionST = Delaware, businessCategory = Private Organization, serialNumber = 2927442, C = US, postalCode = 60603, ST = Illinois, L = Chicago, street = 135 S La Salle St, O = Bank of America Corporation, OU = eComm Network Infrastructure, CN = www.bankofamerica.com verify return:1 --- Certificate chain 0 s:/jurisdictionC=US/jurisdictionST=Delaware/businessCategory=Private Organization/serialNumber=2927442/C=US/postalCode=60603/ST=Illinois/L=Chicago/street=135 S La Salle St/O=Bank of America Corporation/OU=eComm Network Infrastructure/CN=www.bankofamerica.com i:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 EV SSL CA - G3 -----BEGIN CERTIFICATE----- MIIGzTCCBbWgAwIBAgIQZw38pkdGCfyVtu3gGj6+wDANBgkqhkiG9w0BAQsFADB3 MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAd BgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVj IENsYXNzIDMgRVYgU1NMIENBIC0gRzMwHhcNMTYwOTA4MDAwMDAwWhcNMTcwOTA5 MjM1OTU5WjCCASwxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIB AgwIRGVsYXdhcmUxHTAbBgNVBA8TFFByaXZhdGUgT3JnYW5pemF0aW9uMRAwDgYD VQQFEwcyOTI3NDQyMQswCQYDVQQGEwJVUzEOMAwGA1UEEQwFNjA2MDMxETAPBgNV BAgMCElsbGlub2lzMRAwDgYDVQQHDAdDaGljYWdvMRowGAYDVQQJDBExMzUgUyBM YSBTYWxsZSBTdDEkMCIGA1UECgwbQmFuayBvZiBBbWVyaWNhIENvcnBvcmF0aW9u MSUwIwYDVQQLDBxlQ29tbSBOZXR3b3JrIEluZnJhc3RydWN0dXJlMR4wHAYDVQQD DBV3d3cuYmFua29mYW1lcmljYS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQC/TqlEZRi3BOSn3Tb6R9TGlgPTAOVPjRZ3hHnApUrWqxBu4if/0DMT Fd5Z3pjLZwj7AApuSqO4UxsU8x9vnuknqOQqa8rFEUON4zVUDsoCR3l+7KC7Acj7 tPDUT/pjdPIe+X00GLEKf7GeZQPZsuR7ha7ubdlfAWNyM4KlCiS0HtDMY6XDwyNo qx1gnbMSFOZwiOSb/WHYvtlxR//1+3xBmmuY1ADI3ucEVUtgfbBrOWK4+GJekhw9 0MJ/U1bkse09UWmZXWZMD8IWrNGDFpulNPWFX/9p22wn139wU9DaTCMWEg474ZE2 C7wLc+W+ED8qaX2bUzZmovajKR8YHM69AgMBAAGjggKcMIICmDA6BgNVHREEMzAx ghhtb2JpbGUuYmFua29mYW1lcmljYS5jb22CFXd3dy5iYW5rb2ZhbWVyaWNhLmNv bTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcD AQYIKwYBBQUHAwIwbwYDVR0gBGgwZjAHBgVngQwBATBbBgtghkgBhvhFAQcXBjBM MCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2NwczAlBggrBgEFBQcC AjAZDBdodHRwczovL2Quc3ltY2IuY29tL3JwYTAfBgNVHSMEGDAWgBQBWavn3ToL WaZkY9bPIAdX1ZHnajArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8vc3Iuc3ltY2Iu Y29tL3NyLmNybDBXBggrBgEFBQcBAQRLMEkwHwYIKwYBBQUHMAGGE2h0dHA6Ly9z ci5zeW1jZC5jb20wJgYIKwYBBQUHMAKGGmh0dHA6Ly9zci5zeW1jYi5jb20vc3Iu Y3J0MIIBBgYKKwYBBAHWeQIEAgSB9wSB9ADyAHcA3esdK3oNT6Ygi4GtgWhwfi6O nQHVXIiNPRHEzbbsvswAAAFXC1DEggAABAMASDBGAiEA4R53+kQj3qfksYu1Gt4s chQjO9lknpuUVn23eK6P8JUCIQD1yk1gi8ESoKK60Ildlx1y9mAu/5YTbbNozGlA BQPh1QB3AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABVwtQxcsA AAQDAEgwRgIhAMkzubkAtzPoMTvWJzptolZ9MDMca6wj3JxCP7RrXGHkAiEA5Smx 0Aj0XaBVY8NDODIFcN5QrelpQYUV3hziMWb84m0wDQYJKoZIhvcNAQELBQADggEB AG3/NuJP9lMxDhdMXEbYegw554x57PDcJOhxadv6mvtMIhenfCyXdv3DDwCFUsu3 zmgqkXc/LpixanSdSWK6fsiujjpspeyo8XhGpW/ABMlPkUIJATJ76nSF5uLmC5uv kX1KYhTW7kGN8wU2zsxkQvOvM/fSc0StjtoXFp1BwtqtImR6MQyGf1WQVs+LF8TW g9bnbOOLr2OT0uLFpG4UnuYuGlv6uJOp7edAAjUzKTFZA3tCZqU0hhves7JPcIOO BXmCxcOhEmCii/np+tHDsWIgSaf2emIw9YapJBk8Qfwl7t4pwt/JldNk5a7wwkgd xuq62FwAYaD+xFi3yIp1H2c= -----END CERTIFICATE----- 1 s:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 EV SSL CA - G3 i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5 -----BEGIN CERTIFICATE----- MIIFKzCCBBOgAwIBAgIQfuFKb2/v8tN/P61lTTratDANBgkqhkiG9w0BAQsFADCB yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5IC0gRzUwHhcNMTMxMDMxMDAwMDAwWhcNMjMxMDMwMjM1OTU5WjB3MQsw CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIENs YXNzIDMgRVYgU1NMIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQDYoWV0I+grZOIy1zM3PY71NBZI3U9/hxz4RCMTjvsR2ERaGHGOYBYmkpv9 FwvhcXBC/r/6HMCqo6e1cej/GIP23xAKE2LIPZyn3i4/DNkd5y77Ks7Imn+Hv9hM BBUyydHMlXGgTihPhNk1++OGb5RT5nKKY2cuvmn2926OnGAE6yn6xEdC0niY4+wL pZLct5q9gGQrOHw4CVtm9i2VeoayNC6FnpAOX7ddpFFyRnATv2fytqdNFB5suVPu IxpOjUhVQ0GxiXVqQCjFfd3SbtICGS97JJRL6/EaqZvjI5rq+jOrCiy39GAI3Z8c zd0tAWaAr7MvKR0juIrhoXAHDDQPAgMBAAGjggFdMIIBWTAvBggrBgEFBQcBAQQj MCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9zMi5zeW1jYi5jb20wEgYDVR0TAQH/BAgw BgEB/wIBADBlBgNVHSAEXjBcMFoGBFUdIAAwUjAmBggrBgEFBQcCARYaaHR0cDov L3d3dy5zeW1hdXRoLmNvbS9jcHMwKAYIKwYBBQUHAgIwHBoaaHR0cDovL3d3dy5z eW1hdXRoLmNvbS9ycGEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3MxLnN5bWNi LmNvbS9wY2EzLWc1LmNybDAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwx GjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNTMzMB0GA1UdDgQWBBQBWavn3ToLWaZk Y9bPIAdX1ZHnajAfBgNVHSMEGDAWgBR/02Wnwt3su/AwCfNDOfoCrzMxMzANBgkq hkiG9w0BAQsFAAOCAQEAQgFVe9AWGl1Y6LubqE3X89frE5SG1n8hC0e8V5uSXU8F nzikEHzPg74GQ0aNCLxq1xCm+quvL2GoY/Jl339MiBKIT7Np2f8nwAqXkY9W+4nE qLuSLRtzsMarNvSWbCAI7woeZiRFT2cAQMgHVHQzO6atuyOfZu2iRHA0+w7qAf3P eHTfp61Vt19N9tY/4IbOJMdCqRMURDVLtt/JYKwMf9mTIUvunORJApjTYHtcvNUw LwfORELEC5n+5p/8sHiGUW3RLJ3GlvuFgrsEL/digO9i2n/2DqyQuFa9eT/ygG6j 2bkPXToHHZGThkspTOHcteHgM52zyzaRS/6htO7w+Q== -----END CERTIFICATE----- 2 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5 i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5 -----BEGIN CERTIFICATE----- MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y 5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ 4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq -----END CERTIFICATE----- --- Server certificate subject=/jurisdictionC=US/jurisdictionST=Delaware/businessCategory=Private Organization/serialNumber=2927442/C=US/postalCode=60603/ST=Illinois/L=Chicago/street=135 S La Salle St/O=Bank of America Corporation/OU=eComm Network Infrastructure/CN=www.bankofamerica.com issuer=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 EV SSL CA - G3 --- No client certificate CA names sent --- SSL handshake has read 4478 bytes and written 626 bytes --- New, TLSv1/SSLv3, Cipher is AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : AES256-GCM-SHA384 Session-ID: A5BF1DE3E585A246ADAD5642033F097B7A37E7051F7A3A64950ED846055B5EDF Session-ID-ctx: Master-Key: 70634E09C0BB6679F8289119C7D88A31AB739F97747994ED8E1971DBDCD34A75945A2C4F0F83AA76CDF806805B2031EF Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1502575042 Timeout : 300 (sec) Verify return code: 0 (ok) --- Q DONE demoAdmin@deomPC ~ $
Notice openssl s_client -connect host:port -showcerts -verify depthNum and openssl verify -CAfile ca.crt certfile.crt do the same thing but with subtle differences. Let's say you put bankofamerica's cert (text between first -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----) into
bac.crt, put Symantec's cert (text between second-----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----) into ca.crt, and put the Verisign's cert (text between third-----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----) into root.crt.
The verification commands with openssl verify output will looks like the following. openssl verify -CAfile ca.crt bac.crt fails because openssl verify consider the Symantec as a root CA, and expect the root CA to be self-signed. In another words you can only have one true root CA cert, which is the self-signed Verisign cert, all the intermediate certificates should be marked as untrusted in order to have the verify to pass.
demoAdmin@deomPC ~ $ ls bac.crt bk ca.crt root.crt demoAdmin@deomPC ~ $ openssl verify -CAfile root.crt ca.crt ca.crt: OK demoAdmin@deomPC ~ $ openssl verify -CAfile ca.crt bac.crt bac.crt: C = US, O = Symantec Corporation, OU = Symantec Trust Network, CN = Symantec Class 3 EV SSL CA - G3 error 2 at 1 depth lookup:unable to get issuer certificate demoAdmin@deomPC ~ $ openssl verify -CAfile root.crt -untrusted ca.crt bac.crt bac.crt: OK
Modern browsers did the above job for you under the hood. Chrome for example, keeps a list of trusted root CA certs, Verisign is one of them.
Under Settings -> Advanced -> Manage Certificates -> Trusted Root Certification Authorities
Double click entry "VeriSign Class 3 Public Primary Certification Authority - G5"
root CA |
When you type address www.bankofamerica.com in the browser's address bar, browser automatically add https:// in front of it, which indicates that the browser is connecting to the server's port 443 instead of port 80, and start ssl hand-shake. During hand-shake, the server will present the certificate together with the issuers' certificate. Your browser verify them from host's cert all way down to the intermediate CAs' cert then to the root CA's cert. Since root CA's cert matches the one stored in brower's "Trusted Root Certification Authorities" list, the website https://www.bankofamerica.com/ is marked as trusted, otherwise a warning will be given by the browser.
A rogue host can advertise itself as www.bankofamerica.com by poison the DNS server systems (very hard but not impossible) and impose itself as bank of america's website with all the certs. However, as long as bank of america didn't lost the private key, the imposer won't be able to gain any advantage from the user. Even though the client's browser trusted the certs presented by the rogue host, and start to send traffic encrypted with bank of america's certs, the rogue host won't be able to make sense of these gibberish without bank of america's private key.
The certificate verification is not end there yet, the host's certificate could have been revoked yesterday and openssl's -verify flag wont consider that.
No comments:
Post a Comment