https连接的网站一般都会绑定一个证书,证书可以分为三类:第一类是经过国际CA权威机构认证过的证书,比如谷歌,微软,淘宝这些大型网站使用的证书。这类网站我们通过浏览器访问时在地址栏会有绿色的证书标识,如下图:
第二类是程序员在搭建实验环境或着公司内部使用,可能会使用自签名证书,这种证书用户访问时得在客户端手动添加信任。
第三类是最不伦不类的一种,给中国13亿人口提供火车票订购服务的12306网站,竟然使用的是一个未被信任自签名证书,用户在访问网站时,还得手动导入证书,导入证书的步骤竟然放在word文档中,这是在侮辱web 2.0啊。尼玛,如果我电脑上打不开word文档,可能票都买不了。我曾经开玩笑:“国企是中国互联网进一步发展的绊脚石”,再次得到印证。
好,吐槽结束!言归正传,如何使用PowerShell下载Https绑定的证书,我们以12306为例:
$webRequest = [Net.WebRequest]::Create("https://kyfw.12306.cn/otn/leftTicket/init") try { $null = $webRequest.GetResponse() } catch {} $cert = $webRequest.ServicePoint.Certificate $bytes = $cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Cert) $certFile = "12306.cn.cer" Set-Content -Value $bytes -Path $certFile -Encoding Byte Invoke-Item $certFile #Import-Certificate -FilePath $certFile -CertStoreLocation 'Cert:\CurrentUser\Root'
以上脚本参考自:how to download the sslcertificate from a website using powershell
本文链接: https://www.pstips.net/download-https-cert.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
“绊脚石”, 支持菲哥
这个脚本下载的是网页的证书,不是根证书。即使成功导入也没有什么意义。有没有什么办法可以获取网页根证书并下载导入?
正解,后面测试时也发现了。
我一共花了两块钱就让自己的网站有了顶级域名+https可信证书,12306至今还是不被信任的证书,服了!
看我网站www.geekgalaxy.online