尝试让我的WCF客户端和服务器相互通信时,我收到此错误.
X.509证书CN = localhost链构建失败.使用的证书具有无法验证的信任链.替换证书或更改certificateValidationMode.已处理证书链,但终止于信任不信任的根证书.
如果我关闭SSL证书,一切都很完美.
我的任务是为命令行软件开发内部网接口,现在我正在研究安全选项.我们的命令行应用程序已完成,但我还没有开始编写Web界面.我不确切知道潜在客户的安全要求是什么,尽管我认为ssh
命令行界面通常是可以接受的.考虑到这一点,我正在寻求帮助开发一个选择菜单及其相关的优点/缺点.有一天,我们可能会考虑将我们的网络界面发布到互联网上,所以如果它很容易和/或免费,我愿意考虑比目前更必要的安全性.
我一直在做很多阅读,我的初步结论是,没有证书的SSL安全性是最好的方法,不是因为安全性较低是不可接受的,而是因为SSL是标准,因为它似乎并不困难.建立.我是一名安全非专家,不需要解释为什么安全非专家可以接受的安全性较低.如有必要,我可以在将来升级我的应用程序以使用证书.
这是一个与SSL相关的安全选择列表,按照我对安全级别的看法和我的评论进行排序.我需要什么级别的保护?
没有SSL.如果我们的客户不担心他们的员工看到/改变彼此的数据,这可能是可以接受的.他们的员工可能希望相互分享结果,我可以使用基于IP的访问控制和/或密码来保证安全.
没有证书的SSL.这会加密通信,至少可以防止未经授权的员工读取数据.使用密码,这ssh
与命令行上的安全级别相同,对吧?我不需要担心内联网中的中间人攻击,对吗?如果有大量浏览器警告消息,则此方法的con.
使用自签名证书执行SSL.这给了我什么,没有证书给我?如果DNS可以被不适当地更改,那么客户那么我的应用程序是他们最不关心的问题.换句话说,如果DNS可以改变,那么我认为ssh
也是脆弱的.
使用本地证书颁发机构执行SSL.OpenSSL允许我创建自己的证书颁发机构.这给了我一个自签名证书不是什么?我假设在局域网上,验证服务器不太重要.
使用外部证书颁发机构执行SSL.有没有理由去内联网这条路线?我在网上发现了一些"内联网证书" - 但目前尚不清楚他们提供的是我自己无法做到的.
作为参考,此页面可能对比较证书很有用:
http://httpd.apache.org/docs/trunk/ssl/ssl_faq.html#aboutcerts
[更新]
这里有一篇文章讨论了从一个公共CA获取内部证书的风险和规则
我正在练习'Web Scraping with Python'的代码,我一直有这个证书问题:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
pages = set()
def getLinks(pageUrl):
global pages
html = urlopen("http://en.wikipedia.org"+pageUrl)
bsObj = BeautifulSoup(html)
for link in bsObj.findAll("a", href=re.compile("^(/wiki/)")):
if 'href' in link.attrs:
if link.attrs['href'] not in pages:
#We have encountered a new page
newPage = link.attrs['href']
print(newPage)
pages.add(newPage)
getLinks(newPage)
getLinks("")
Run Code Online (Sandbox Code Playgroud)
错误是:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1319, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1049)>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我也在练习scrapy,但一直都在解决问题:找不到命令:scrapy(我在网上尝试过各种解决方案,但都没有用......真的很令人沮丧)
创建 Web 项目时,Visual Studio 会自动生成 SSL 证书并提示您安装它。一切正常。
该证书现已过期,我不知道如何让它重新生成证书并重新开始该过程。我尝试localhost
从证书存储中删除所有现有证书并删除 Secrets.json,但似乎没有什么可以强制它重新启动生成过程。
asp.net ssl-certificate visual-studio .net-core asp.net-core
我的应用程序使用SSL与服务器安全通信,并且无法验证证书链.链看起来像这样:
Entrust.net安全服务器认证机构 - > DigiCert Global CA - >*.ourdomain.com
我们正在使用从Mozilla取出的证书商店.它包含Entrust.net证书,但不包含DigiCert Global CA证书.
我的理解是,只要根权限是,但不必信任中间权限,但验证失败:
% openssl verify -CAfile mozilla-root-certs.crt ourdomain.com.crt
error 20 at 0 depth lookup:unable to get local issuer certificate
Run Code Online (Sandbox Code Playgroud)
那么我需要明确信任DigiCert Global CA才能通过验证吗?这似乎是错的.但是你告诉我!
编辑:我现在明白证书文件需要预先提供给OpenSSL.像这样的东西有效:
% openssl verify -CAfile mozilla-root-certs.crt -untrusted digicert.crt ourdomain.com.crt
ourdomain.com.crt: OK
Run Code Online (Sandbox Code Playgroud)
这允许我提供DigiCert CA的副本而不明确说"我相信它",整个链仍然需要验证.
但是,像Firefox这样的浏览器肯定不会附带它所需要的每个证书的副本.总会有新的CA,重点是使用根证书的安全性来确保所有中间CA都有效.对?那么,如何做这项工作?它看起来真的很傻吗?
有没有办法让标准的java SSL套接字禁用与属性的ssl连接的主机名验证?我到目前为止找到的唯一方法是编写一个主机名验证程序,它始终返回true.
Weblogic提供了这种可能性,可以使用以下属性禁用主机名验证:
-Dweblogic.security.SSL.ignoreHostnameVerify
我正在尝试在Android模拟器上安装Charles证书,我注意到有两个凭据使用选项:"VPN和应用程序"和"Wi-Fi".
我试过四处寻找有关这两个选项的解释,但我发现的那个只是说"选一个适合你的用例."
这两个选项有什么区别?开发人员应该选择哪一个?
使用Visual Studio 2005 - C#2.0,System.Net.WebClient.UploadData(Uri address, byte[] data)
Windows Server 2003
所以这是代码的精简版本:
static string SO_method(String fullRequestString)
{
string theUriStringToUse = @"https://10.10.10.10:443"; // populated with real endpoint IP:port
string proxyAddressAndPort = @"http://10.10.10.10:80/"; // populated with a real proxy IP:port
Byte[] utf8EncodedResponse; // for the return data in utf8
string responseString; // for the return data in utf16
WebClient myWebClient = new WebClient(); // instantiate a web client
WebProxy proxyObject = new WebProxy(proxyAddressAndPort, true);// instantiate & popuylate a web proxy
myWebClient.Proxy …
Run Code Online (Sandbox Code Playgroud) 我四处搜寻,但没有找到一个明确的例子. 我想按照以下步骤以编程方式(c#)创建自签名(自我)可信证书:
步骤1:动态 创建根CA证书并将其添加到"受信任的根证书颁发机构"文件夹中的证书存储区
我想要完成这个命令行工具的功能:
makecert.exe -sk RootCA -sky签名-pe -n CN = MY_CA -r -sr LocalMachine -ss根MyCA.cer
第2步: 根据以前创建的根CA证书创建证书,并将其放入证书存储区"Personal"文件夹中
我想要完成这个命令行工具的功能:
makecert.exe -sk server -sky exchange -pe -n CN = 127.0.0.1 -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My MyCertificate.cer
我想得到这个:
我这样做了(参见下面的代码 - 第1步),不知道如何制作STEP2,任何帮助都将不胜感激.目标计算机是Windows XP/Seven. 我尝试了纯粹的.net方法和BouncyCastle库.
makecert.exe -sk RootCA -sky signature -pe -n CN=MY_CA -r -sr LocalMachine -ss Root MyCA.cer
Run Code Online (Sandbox Code Playgroud) 当我偶然发现加密时,我开始查看ssl证书,并且我想将它与gitlab一起使用,但是它正在运行在树莓派2上并且它现在运行得非常完美(所以我不想弄乱任何东西) ),他会不会正确安装一个let encrypt ssl证书?PS:我的安装是综合的
ssl-certificate ×10
ssl ×2
.net ×1
.net-core ×1
android ×1
asp.net ×1
asp.net-core ×1
bouncycastle ×1
c# ×1
c#-2.0 ×1
emulation ×1
gitlab ×1
hostname ×1
intranet ×1
java ×1
lets-encrypt ×1
openssl ×1
python ×1
raspbian ×1
scrapy ×1
security ×1
ssh ×1
wcf ×1
web-scraping ×1