是否有一种JavaScript在浏览器中运行的方法,以确定哪个CA证书用于为浏览器的当前HTTPS连接验证远程主机,还获取该证书的属性,例如CA的名称?
如果没有,是否有任何其他选项以编程方式获取此信息,例如服务器端的ActiveX,Java,CGI,......?
将信任分散一点是很好的,所以我们不必在任何实例中只依赖一个根.
是否可以拥有一个由多个CA签名的证书?
在不泄漏太多信息的情况下,我需要设置一个旨在供整个互联网上的最终用户使用的Web服务器系统.
用例是这样的:
由于分布式软件将成为每个用户机器上的唯一Web服务器,因此我不确定如何或甚至是否可能获得第三方签名的SSL证书,该证书在用户连接时不会导致可信错误通过网络浏览器.当然,它可以使用自签名SSL证书,但其目的是避免浏览器警告,以便最终用户隐含地"信任"来自通过SSL运行其Web服务器的自己的应用程序的数据.
这可能吗?
在过去,基础R download.file()
无法使用HTTPS协议,因此必须使用RCurl.自R 3.3.0起:
所有版本都支持https:URL,默认方法是download.file(),url()和使用它们的代码.遗憾的是,无法保证可以访问任何特定的https:URL....不同的访问方法可能允许不同的协议或使用私有证书包...
的download.file()
帮助下仍然说道:
提供的包"RCurl"提供了更全面的URL下载工具.
其中(顺便提一下包括cookie和标题管理).
基于RCurl常见问题解答(查找"当我尝试通过https与URL进行交互时,我收到错误"),可以通过以下方式管理HTTPS URL:
getURL(url, cainfo="CA bundle")
Run Code Online (Sandbox Code Playgroud)
其中CA bundle
是证书颁发机构捆绑文件的路径.一个这样的捆绑可以从卷曲网站本身获得:https:
//curl.haxx.se/ca/cacert.pem
测试基于Windows平台
对于许多HTTPS网站的 download.file()
工作原理如下:
download.file(url="https://www.google.com", destfile="google.html")
download.file(url="https://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem")
Run Code Online (Sandbox Code Playgroud)
关于RCurl,使用cacert.pem
上面下载的包,可能会出现错误:
library(RCurl)
getURL("https://www.google.com", cainfo = "cacert.pem")
# Error in function (type, msg, asError = TRUE) :
# SSL certificate problem: unable to get local issuer certificate
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只需删除对证书包的引用即可解决问题:
getURL("https://www.google.com") # works
getURL("https://www.google.com", ssl.verifypeer=TRUE) # works
Run Code Online (Sandbox Code Playgroud)
ssl.verifypeer = TRUE
用于确保成功不是由于getURL()
压制安全性.该论点记录在RCurl FAQ中 …
我正在尝试在我的本地PC上设置开发环境.由于生产网站支持HTTPS(这些日子不支持?),我想在localhost上也有这个.我觉得这很容易,但没有.
我有一个XAMP安装,并设置所有,所以我可以访问该网站.但是,每当我在本地访问网站上的任何页面时,我都会收到Chrome警告:
NET :: ERR_CERT_AUTHORITY_INVALID
我确实按照以下线程尝试解决它:
我还使用正确的主题备用名称(SAN)部分创建了证书,基于此:
https://deliciousbrains.com/https-locally-without-browser-privacy-errors/
之后,我生成了CER或P7B文件并将其导入Chrome.我重新启动了Apache和Chrome.
我将证书放在受信任的根证书颁发机构中.不知何故,Chrome决定将其置于中级根证书颁发机构......
我使用的是Chrome 61,我在60年代也是如此.
所以不知怎的,我无法安装自签名证书,并继续得到这个警告,这基本上使得无法在localhost上进行开发......
我知道这种自签名并不完全值得信赖,但必须有一种离线开发的方法吗?从现在开始我们必须在线建立网站是没有意义的吗?...
有任何想法吗?
我正在开发将使用clickonce(在网站foo.com上)部署的软件,然后使用带有加密传输的WCF连接到我的服务器
所以我需要一个SSL证书,它将:
我还希望我的SSL证书由公众所知的权限签名(即,firefox或windows不会要求用户首先安装权限证书!)
你会买什么SSL证书?
我浏览过Verisign网站,"安全网站EV"证书每年花费1150欧元("Pro"版本似乎只对旧版浏览器的兼容性有用)
我有推送通知的问题.我有一个由团队成员创建的p.12证书,我有设备令牌,可以将设备推送到.我正在使用javapns库来执行推送(也尝试了相同结果的javaapns lib)但我一直收到此错误:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1720)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:632)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at java.io.OutputStream.write(OutputStream.java:58)
at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:402)
at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:350)
at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:320)
at javapns.Push.sendPayload(Push.java:177)
at javapns.Push.combined(Push.java:100)
at PushTest.push(PushTest.java:43)
at PushTest.main(PushTest.java:25)
Run Code Online (Sandbox Code Playgroud)
这是我用来测试的代码
try {
List<PushedNotification> n = Push.combined(text, 20, null, file, "********", false, token);
for (PushedNotification notification : n) {
if (notification.isSuccessful())
System.out.println("Push notification sent successfully to: " + notification.getDevice().getToken());
else {
String invalidToken = notification.getDevice().getToken();
Exception theProblem = notification.getException();
theProblem.printStackTrace();
ResponsePacket theErrorResponse = …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了一些关于SSL证书的内容,特别是我读过SSL证书"需要一个专用的IP地址".现在,我不确定这个意思; 这是否意味着证书需要与用于正常HTTP通信的IP地址分开的专用IP地址,或者只是它不能与其他SSL证书共享IP地址?
为了澄清,我有一个带有专用IP地址的VPS.VPS托管了很多不同的站点,包括主站点的几个子域,但只有主站点和子域需要SSL.我是否可以使用当前的IP地址为*.example.com购买SSL证书,或者我是否需要获得与VPS上其他站点分开的SSL证书?或者更糟糕的是,我是否需要获得与服务器上所有HTTP流量分开的服务?请记住,其他任何网站都不需要SSL.
感谢您对该主题的任何澄清.
编辑:我担心的一些消息来源:
http://symbiosis.bytemark.co.uk/docs/symbiosis.html#ch-ssl-hosting
亚马逊最近在CloudFront上推出了一项新功能,该功能使用SNI(服务器名称指示)免费支持自定义SSL证书.
我使用StartSSL的免费Class 1证书设置了我的发行版,当我注意到该站点在部署后的短时间内发生故障时,一切正常.运行SSL Checker会返回我的证书正常工作:
但是当我尝试通过HTTPS访问网站时,我会点击此错误页面(它将适用于第一个请求,然后在后续尝试连接时关闭).
使用ssl访问时,这是一个详细的输出(在索引上成功):
$ curl -I -v -ssl https://wikichen.is
* Adding handle: conn: 0x7f9f82804000
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7f9f82804000) send_pipe: 1, recv_pipe: 0
* About to connect() to wikichen.is port 443 (#0)
* Trying 54.230.141.222...
* Connected to wikichen.is (54.230.141.222) port 443 (#0)
* TLS 1.2 connection using TLS_RSA_WITH_RC4_128_MD5
* Server certificate: www.wikichen.is (6w984WNu7vM5OrdU)
* Server certificate: StartCom Class 1 Primary …
Run Code Online (Sandbox Code Playgroud) ssl-certificate ×10
ssl ×6
https ×2
browser ×1
certificate ×1
curl ×1
http ×1
java ×1
javascript ×1
r ×1
rcurl ×1