test me

Site Search:

How to verify a website with nslookup and openssl

Back>

When a website asking for sensitive information. We have two questions:

  1. should we trust this organization?
  2. 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
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.