我有一个简单的Web服务调用,由.NET(C#)2.0 Windows应用程序通过Visual Studio生成的Web服务代理生成,用于也用C#(2.0)编写的Web服务.这已经工作了几年,并且在它运行的十几个地方继续这样做.
新站点的新安装遇到问题.尝试调用Web服务时,它失败并显示以下消息:
无法为SSL/TLS安全通道建立信任关系
Web服务的URL使用SSL(https://) - 但这已经在很多其他位置工作了很长时间(并且仍在继续).
我在哪里看?这可能是Windows和.NET之间的安全问题吗?如果是这样,我在哪里建立信任关系?我迷路了!
我有一个本地域(markfisher.local),我为其制作了自签名证书,并将其添加到钥匙串访问中的证书中(我使用的是 Mac)。这会导致该证书在 Chrome 和 Safari 中受到信任。如果我将 KeyChain Access 中的证书信任编辑为“从不信任”,则 Chrome 和 Safari 不再接受它,然后如果我将其改回“始终信任”,则我可以再次访问 markfisher.local。
但是当我在 Firefox 中访问该网站时,我得到以下信息:
markfisher.local 使用无效的安全证书。该证书不是来自受信任的来源。错误代码:MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY
我已按照此答案中的建议security.enterprise_roots.enabled设置为。另外,转到“首选项”>“隐私和安全”>“查看证书”,我可以看到我的证书位于“权限”选项卡中,并且我已在“编辑信任”对话框中选中“此证书可以识别网站”。原来没有检查这个true
但是 Firefox 拒绝接受该证书。我怎样才能解决这个问题?
我最近使用VMware Workstation 8设置并运行Windows 2008 r2服务器.
我正在使用Postgresql 9.1运行Centos 6.2虚拟Linux机箱.一切似乎都在本地,我可以通过桥接网络连接连接到CentOS盒.
我跟随David Ghedini的演练来设置Postgresql 9.1.所以我能够启动一个putty会话窗口,以root身份登录并启动psql shell并以postgres用户身份发出语句.我的问题是我无法使用Windows 7客户端中的pgAdmin III进行连接.我更新了/var/lib/pgsql/9.1/data/postgresql.conf启用listen_addresses'*'等.
谁能给我任何关于找到我的错的提示.确保Windows服务器上也禁用了Windows防火墙.
pgAdmin III客户报告;
'服务器不听'
服务器不接受连接:连接库报告
无法连接到服务器:连接超时(0x0000274C/10060)服务器是否在主机"192.168.1.26"上运行并接受端口5432上的TCP/IP连接?
这是pg_hba.conf添加的文件条目:
#TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.1.0/24 trust
Run Code Online (Sandbox Code Playgroud)
并添加了iptables文件条目:
-A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.1.26 --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -s 192.168.1.26 --sport 5432 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud) 在我的构建过程中,我想要包含符合RFC-3161标准的TSA的时间戳.在运行时,代码将验证此时间戳,最好不需要第三方库的帮助.(这是一个.NET应用程序,所以我可以随时使用标准的哈希和非对称加密功能.)
RFC 3161依赖于ASN.1和X.690以及诸如此类的东西,实现起来并不简单,所以至少现在,我正在使用Bouncy Castle来生成TimeStampReq(请求)并解析TimeStampResp(响应).我只是无法弄清楚如何验证响应.
到目前为止,我已经弄清楚如何提取签名本身,公共证书,创建时间戳的时间,以及我发送的消息imprint摘要和nonce(用于构建时验证).我无法弄清楚的是如何将这些数据放在一起以生成散列和签名的数据.
这是我正在做什么以及我想做什么的粗略概念.这是测试代码,所以我采取了一些快捷方式.一旦我得到了有效的东西,我将不得不清理一些事情并以正确的方式完成它们.
// a lot of fully-qualified type names here to make sure it's clear what I'm using
static void WriteTimestampToBuild(){
var dataToTimestamp = Encoding.UTF8.GetBytes("The rain in Spain falls mainly on the plain");
var hashToTimestamp = new System.Security.Cryptography.SHA1Cng().ComputeHash(dataToTimestamp);
var nonce = GetRandomNonce();
var tsr = GetTimestamp(hashToTimestamp, nonce, "http://some.rfc3161-compliant.server");
var tst = tsr.TimeStampToken;
var tsi = tst.TimeStampInfo;
ValidateNonceAndHash(tsi, hashToTimestamp, nonce);
var cms = tst.ToCmsSignedData();
var signer =
cms.GetSignerInfos().GetSigners()
.Cast<Org.BouncyCastle.Cms.SignerInformation>().First();
// TODO: handle multiple signers?
var signature …Run Code Online (Sandbox Code Playgroud) trust bouncycastle digital-signature trusted-timestamp rfc3161
有没有人知道在分散系统中计算你"信任"另一个用户(他们的声誉)的算法.
像这样的网站使用集中的权限来跟踪信誉点,但是当你不能信任某个权威机构公正地维护这个名单,或者基础设施不存在时,你如何对同行的声誉进行排名呢?
我正在想象类似于PageRank的东西- 我相信我的朋友Alice,她相信她的朋友Bob,因此我对Bob有一些可传递的信任.如果我的另一个朋友卡罗尔也信任鲍勃,那么我对鲍勃的信任增加了.
有没有办法在全球范围内计算,或者每个用户都必须跟踪自己的网络?
我以为你可以'声明'你信任谁,这会给每个人一组相应的传入信任链接,但我觉得这很容易通过创建许多只创建声望点的僵尸用户来实现,比如链接农场搜索结果.这可能是问题的核心:如果谷歌仍然存在人们产生虚假PageRank分数的问题,那么它可能不是一个容易解决的问题:)
我有一个MVC 3应用程序,使用Windows身份验证和声明使用WIF 4.5.
通过AD组中的成员资格(当前)控制对应用程序的访问:
<deny users="?" />
<allow roles="domain\somegroup" />
<deny users="*" />
Run Code Online (Sandbox Code Playgroud)
除AD组外,我们还有需要添加的自定义角色.(此应用程序正在从Forms转换为Windows身份验证)
为了支持这些自定义角色(直到它们在AD中管理),我们将它们添加为ClaimTypes.GroupSid声明给用户,以便现有代码利用[Authorize("ADMIN")]并User.IsInRole("ADMIN")继续运行:
Application_PostAuthenticateRequest(object sender, EventArgs e)
{
var identity = ClaimsPrincipal.Current.Identity as WindowsIdentity;
var roles = userDAL.GetRoles(identity.Name);
foreach(var role in roles)
{
identity.AddClaim(new Claim(ClaimTypes.GroupSid, role));
}
}
Run Code Online (Sandbox Code Playgroud)
这一切都按预期工作.
除非当前用户不是某个自定义角色(如ADMIN)的成员,并且该角色在AD中也不存在
我们使用[Authorize("ADMIN")]Controller Action Methods,以及各种User.IsInRole("ADMIN")场景中的依赖实例.在那些发生错误并且应用程序爆炸的情况下.
AD基础架构正处于升级/迁移过程中.我不知道那里的所有细节,但我知道有一些域名,据说他们之间有信任,基础设施人员已经提到这些信任关系正在运行.
所以我想我想知道两件事:
这似乎不是我们的代码应该处理的东西.那么域名真的可能出现什么问题?我可以找出信任关系失败的"可信"域名吗?
解决这个问题的最佳方法是什么?我不喜欢编写辅助方法和Authorize()子类只是为了捕获这个异常.
我们有几台AD服务器,它们之间建立了森林信任,因此来自不同域的Windows用户可以访问受限资源.假设我们有domainA.com和domainB.com,因此域domainB.com中的任何用户都可以登录domainA.com上的资源.出于安全原因,管理员禁用对LDAP服务器的匿名访问.
现在,我们需要在OpenLDAP客户端的帮助下,在PHP代码中列出所有LDAP服务器的所有用户.以下是获取domainB.com所有用户信息的PHP代码
define('USER', 'user@domainA.com'); // User from domainA.com here
$ldap = ldap_connect('domainB.com') or die('Bad connection');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
ldap_bind($ldap, USER, PASS) or die('Cannot bind');
Run Code Online (Sandbox Code Playgroud)
我的脚本因ldap错误"49无效凭据"消息"无法绑定"而死亡.AD的其他信息:
80090308:LdapErr:DSID-0C0903A9,评论:AcceptSecurityContext错误,数据52e,v1db1
我认为问题在于简单的身份验证机制,因为当我在Ldap Administrator客户端中使用GSS Negotiate身份验证时,user@domainA.com的凭据一切正常.
如何使用user@domainA.com的凭据在domainB.com上成功绑定?
使用SASL DIGEST-MD5进行UPD1身份验证
ldap_sasl_bind ( $ldap, '', $pass, 'DIGEST-MD5', null, 'user@domainA.com');
Run Code Online (Sandbox Code Playgroud)
来自AD的日志:
The computer attempted to validate the credentials for an account.
Authentication Package: WDigest
Logon Account: user
Source Workstation: DOMAINA
Error Code: 0xc000006a
An account failed to log on.
Subject:
Security ID: NULL SID
Account … Medium Trust阻止您做什么?例如,我已经了解到中信任阻止您使用System.IO.Path.GetTempPath().那还有什么呢?
相当简单的错误,原因很明显 - 我映射了一个网络驱动器,我正在打开它的解决方案.Visual Studio给了我这个错误.
我试着谷歌搜索,令我惊讶的是,找不到修复.我正在运行Visual Studio 2008.
我在google上找到的解决方案说我应该运行Mscorcfg.msc,但不幸的是,我似乎没有在我的计算机上的任何地方使用该文件.我的控制面板中似乎也没有任何与.NET Framework相关的内容.我当然可以运行.NET应用程序,因此框架存在.
另一个解决方案建议运行caspol.exe,虽然这是.NET 2,我也尝试无效.
有任何想法吗?
我应该补充一点,我正在尝试将路径添加到任何可信列表中.
我一直在寻找这一天,并没有找到任何关于它.我试图确定哪些浏览器默认具有哪个受信任的根证书颁发机构.
我对未更新的旧浏览器特别感兴趣(如未安装所有Service Pack的IE 6的原始版本).
有没有人对此有任何想法或如何去寻找这些信息?
谢谢你的帮助!
trust ×10
.net ×2
certificate ×2
security ×2
ssl ×2
asp.net ×1
bouncycastle ×1
browser ×1
c# ×1
centos ×1
cryptography ×1
firefox ×1
isinrole ×1
keychain ×1
ldap ×1
medium-trust ×1
p2p ×1
pgadmin ×1
php ×1
postgresql ×1
rfc3161 ×1
root ×1
vmware ×1