精华内容
下载资源
问答
  • 2021-11-24 18:44:00

    原因

    windows系统根证书未正确安装

    解决步骤

    1. 用浏览器下载沃通SSL的系统根证书更新工具
      https://www.wosign.com/download/rootsupd.exe
    2. 关掉360等杀毒软件
    3. 双击打开rootsupd.exe 会有界面一闪而过,或者干脆不出现
    4. 重启电脑即可,打开jd.com试下

     

    详情:

    WoSign - 自动升级更新Windows 2000 根证书 icon-default.png?t=LA92https://www.wosign.com/download/winroot.htm

    更多相关内容
  • 主要介绍了windows服务器ssl证书创建、安装及配置方法,需要的朋友可以参考下
  • 解决无法将这个证书验证到一个受信任的证书颁发机构方法
  • windows 7 和Vista操作系统上安装驱动的时候,往往会遇到一红色的安全警告框,提示“windows 无法验证此驱动程序软件的发布者”然后让用户选择“继续安装此驱动程序软件”或者“始终安装此驱动程序软件”。
  • 点击查看证书路径 在另一个电脑中访问该网站,...在另一台电脑接收文件,然后右键安装该证书,并且进入能访问网站的电脑浏览器设置中心找到管理证书,我这里使用的是google浏览器 选择导入 选择接收到证书文件...

    点击查看证书路径
    在这里插入图片描述
    在另一个电脑中访问该网站,我使用的浏览器是Mozilla Firefox览器
    在这里插入图片描述
    在这里插入图片描述
    选择 More Infornation 导出该安全证书
    把导出的证书发送给刚刚不能访问的该网站的电脑,记得你电脑访问该网站必须是正常的
    在另一台电脑接收文件,然后右键安装该证书,并且进入不能访问网站的电脑浏览器设置中心找到管理证书,我这里使用的是google浏览器
    在这里插入图片描述
    选择导入
    在这里插入图片描述
    选择接收到证书文件,一直单击下一步,直到浏览器系统提示 “导入成功”
    在这里插入图片描述
    关闭浏览器,重新打开浏览器,打开网站就可以正常访问了

    展开全文
  • 我们可以看到提示windows没有足够信息,验证证书。 原因是我们系统中没有找到此网站的证书 先点击证书路径,看看是哪个证书提示错误 我们可以在详细信息里面找到此证书的名字,或者是颁发者, 进入这个网站...

    我们在打开https的网站的时候,有时候会提示这个,

    这个的原因是因为没有加载到证书的原因,当然也可以跳过,点击页面的高级,可以跳过验证直接进入,

    这次我们记录的是如何把这个证书加载到

    在这里插入图片描述

    点击浏览器的不安全或者一个🔒的符号

    在这里插入图片描述

    我们可以看到提示windows没有足够信息,不能验证该证书。

    原因是我们系统中没有找到此网站的证书

    在这里插入图片描述

    先点击证书路径,看看是哪个证书提示错误

    我们可以在详细信息里面找到此证书的名字,或者是颁发者,

    进入这个网站搜索一下缺少的证书或者直接百度也可以搜索到

    https://crt.sh/

    在这里插入图片描述

    点击下载

    在这里插入图片描述

    点击安装证书

    在这里插入图片描述

    但是如果再次按照之前的步骤查看证书信息的时候出现这个

    在这里插入图片描述

    就需要把这个证书放到信任列表里面去

    下面是步骤

    在这里插入图片描述
    在这里插入图片描述

    添加证书 然后下一步

    在这里插入图片描述
    在这里插入图片描述

    导入你之前下载的证书就可以了

    展开全文
  • Windows验证https证书

    千次阅读 2019-01-16 15:14:10
    这种方式的好处是即使Windows证书不全,也能自动更新,缺点是验证时间可能会很长。 将libcurl的openssl替换为winssl即可,替换后在实体机上运行正常,但是在虚拟机内新安装的Win7却出现了错误提示:由于吊销服务器...

    最近在写一个Windows桌面程序需要给https请求加上证书验证,使用的http库是libcurl+openssl,使用openssl自带的证书验证功能,只能内嵌CA证书,但是我的程序不方便更新,所以最好的方式是使用Windows的证书存储做验证,这里有两种方式。

    • 遍历Windows信任证书,将这些证书加入到证书存储区
    • 使用Windows接口验证证书链

    遍历Windows信任证书,将这些证书加入到证书存储区

    这种方式的缺点是如果Windows没有安装服务端使用的CA证书,验证会失败。

    void addCertificatesForStore(X509_STORE *certStore,const char *subSystemName)
    {
    	HCERTSTORE storeHandle = NULL;
    	PCCERT_CONTEXT windowsCertificate = nullptr;
    	do 
    	{
    		HCERTSTORE storeHandle = CertOpenSystemStoreA(NULL, subSystemName);
    		if (!storeHandle) {
    			break;
    		}
    		while (windowsCertificate=CertEnumCertificatesInStore(storeHandle, windowsCertificate)) {
    			X509 *opensslCertificate = d2i_X509(nullptr, const_cast<unsigned char const **>(&windowsCertificate->pbCertEncoded),
    				windowsCertificate->cbCertEncoded);
    			if (opensslCertificate) {
    				X509_STORE_add_cert(certStore, opensslCertificate);
    				X509_free(opensslCertificate);
    			}
    		}
    	} while (false);
    	if (storeHandle) {
    		CertCloseStore(storeHandle, 0);
    	}	
    }
    
    int sslContextFunction(void* curl, void* sslctx, void* userdata)
    {
    	auto certStore = SSL_CTX_get_cert_store(reinterpret_cast<SSL_CTX *>(sslctx));
    	if (certStore) {
    		addCertificatesForStore(certStore, "CA");
    		addCertificatesForStore(certStore, "AuthRoot");
    		addCertificatesForStore(certStore, "ROOT");
    	}
    	return CURLE_OK;
    }
    
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1);
    curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, sslContextFunction);
    

    使用Windows接口验证证书链

    这种方式的好处是即使Windows证书不全,也能自动更新,缺点是验证时间可能会很长。

    将libcurl的openssl替换为winssl即可,替换后在实体机上运行正常,但是在虚拟机内新安装的Win7却出现了错误提示:由于吊销服务器已脱机,吊销功能无法检查吊销。
    在这里插入图片描述

    原来Windows在验证证书的时候会默认通过网络获取CA的CRL(证书吊销列表),检查该证书是否已被吊销。我们可以通过libcurl设置不检查CRL(这样做会不安全)。

    curl_easy_setopt(curl, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
    

    禁用证书吊销检查后依然出错了,显示15秒超时。
    在这里插入图片描述

    为了知道是哪一步出问题了,我自己写了验证证书代码(使用Windows接口)来代替libcurl的默认实现,代码可以参考libcurlphpchromium,使用CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY可以阻止从网络获取CRL。

    static int sslContextFunction(void* curl, void* sslctx, void* userdata)
    {
    	SSL_CTX *sslContext = reinterpret_cast<SSL_CTX *>(sslctx);
    	SSL_CTX_set_verify(sslContext, SSL_VERIFY_PEER, NULL);
    	SSL_CTX_set_cert_verify_callback(sslContext, sslVerifyCallback, userdata);
    	return CURLE_OK;
    }
    
    static int sslVerifyCallback(X509_STORE_CTX *x509_store_ctx, void *arg) 
    {
    	BOOL ret = FALSE;
    	PCCERT_CONTEXT certCtx = nullptr;
    	PCCERT_CHAIN_CONTEXT certChainCtx = nullptr;
    	unsigned char *derBuf = nullptr;
    	unsigned char *certNameUtf8 = nullptr;
    	int derLen;
    #if OPENSSL_VERSION_NUMBER < 0x10100000L
    	X509 *cert = x509_store_ctx->cert;
    #else
    	X509 *cert = X509_STORE_CTX_get0_cert(x509_store_ctx);
    #endif
        do 
        {
    		/* First convert the x509 struct back to a DER encoded buffer and let Windows decode it into a form it can work with */
    		derLen = i2d_X509(cert, &derBuf);
    		if (derLen < 0) {
    			LOG_ERROR("encoding X509 certificate failed");
    			break;
    		}
    		certCtx = CertCreateCertificateContext(X509_ASN_ENCODING, derBuf, derLen);
    		if (certCtx == NULL) {
    			LOG_ERROR("creating certificate context failed");
    			break;
    		}
     
    		/* Next fetch the relevant cert chain from the store */
    		CERT_ENHKEY_USAGE enhkeyUsage = { 0 };
    		CERT_USAGE_MATCH certUsage = { 0 };
    		CERT_CHAIN_PARA chainParams = { sizeof(CERT_CHAIN_PARA) };
    		LPSTR usages[] = { szOID_PKIX_KP_SERVER_AUTH, szOID_SERVER_GATED_CRYPTO, szOID_SGC_NETSCAPE };
    		enhkeyUsage.cUsageIdentifier = 3;
    		enhkeyUsage.rgpszUsageIdentifier = usages;
    		certUsage.dwType = USAGE_MATCH_TYPE_OR;
    		certUsage.Usage = enhkeyUsage;
    		chainParams.RequestedUsage = certUsage;
    		DWORD chainFlags = CERT_CHAIN_CACHE_END_CERT|CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT;
    		if (!CertGetCertificateChain(NULL, certCtx, NULL, certCtx->hCertStore, &chainParams, chainFlags, NULL, &certChainCtx)) {
    			LOG_ERROR("getting certificate chain failed");
    			break;
    		}
    
    		if (certChainCtx) {
    			LOG_INFO("cert chain context error status:%08x,info status:%08x", certChainCtx->TrustStatus.dwErrorStatus,
    				certChainCtx->TrustStatus.dwInfoStatus);
    		}
    
    		/* Then verify it against a policy */
    		auto certName = X509_get_subject_name(cert);
    		auto index = X509_NAME_get_index_by_NID(certName, NID_commonName, -1);
    		if (index < 0) {
    			LOG_ERROR("unable to locate certificate CN");
    			break;
    		}
    
    		ASN1_STRING_to_UTF8(&certNameUtf8, X509_NAME_ENTRY_get_data(X509_NAME_get_entry(certName, index)));
    		std::wstring serverName;
    		if (!StrUtils::utf8ToUnicode(serverName, (char*)(certNameUtf8))) {
    			LOG_ERROR("unable to convert cert name to wide character string");
    			break;
    		}
    
    		
    		SSL_EXTRA_CERT_CHAIN_POLICY_PARA sslPolicyParams = { sizeof(SSL_EXTRA_CERT_CHAIN_POLICY_PARA) };
    		CERT_CHAIN_POLICY_PARA chainPolicyParams = { sizeof(CERT_CHAIN_POLICY_PARA) };
    		CERT_CHAIN_POLICY_STATUS chainPolicyStatus = { sizeof(CERT_CHAIN_POLICY_STATUS) };
    		sslPolicyParams.dwAuthType = AUTHTYPE_SERVER;
    		sslPolicyParams.pwszServerName =const_cast<wchar_t*>(serverName.c_str());
    		sslPolicyParams.fdwChecks =0x00001000;  // SECURITY_FLAG_IGNORE_CERT_CN_INVALID
    		chainPolicyParams.pvExtraPolicyPara = &sslPolicyParams;
    		chainPolicyParams.dwFlags = CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS;
    		auto verifyResult = CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_SSL, certChainCtx, &chainPolicyParams, &chainPolicyStatus);
    		if (verifyResult && chainPolicyStatus.dwError == ERROR_SUCCESS) {
    			ret = TRUE;
    		} else {
    			if (verifyResult) {
    				LOG_ERROR("check cert chain policy failed with errorcode:%08x", chainPolicyStatus.dwError);
    			} else {
    				LOG_ERROR("unable check cert chain policy");
    			}
    		}
        } while (false);
    
    	if (derBuf) {
    		OPENSSL_free(derBuf);
    	}
    	if (certNameUtf8) {
    		OPENSSL_free(certNameUtf8);
    	}
    	if (certCtx) {
    		CertFreeCertificateContext(certCtx);
    	}
    	if (certChainCtx) {
    		CertFreeCertificateChain(certChainCtx);
    	}
    	return ret;
    }
    

    重新运行发现,CertGetCertificateChain会阻塞30秒然后返回错误码0x01010040,即CERT_TRUST_REVOCATION_STATUS_UNKNOWN|CERT_TRUST_IS_OFFLINE_REVOCATION|CERT_TRUST_IS_PARTIAL_CHAIN,前面两个flag是证书吊销信息可以不管,最后一个flag的意思是证书链未完成;启用CAPI2日志重新运行,发现很多错误,原来是从网络获取CTL(证书信任列表)以及根证书时超时了。

    为什么要从网络获取CTL以及根证书呢,运行certmgr.msc可以发现新装的Win7根证书很少,当遇到系统没有的根证书时就需要查询证书信任列表以及下载根证书。但是手动在浏览器上下载CTL和根证书发现一点也不慢,很正常。

    调用CertGetCertificateChain时抓取程序dump,发现程序阻塞在了WinHttpGetProxyForUrl,原来crypt接口使用winhttp来获取CTL和根证书,在发起请求前会使用WinHttpGetProxyForUrl获取代理信息。

    在这里插入图片描述
    WinHttpGetProxyForUrl为什么会一直阻塞呢,使用IDA分析发现,WinHttpGetProxyForUrl内部会使用RPC调用WPAD服务查询代理信息,然后调用WaitForMultipleObjects等待返回,所以归根到底是WPAD服务阻塞了。

    Win7默认开启了WPAD(WinHTTP Web Proxy Auto-Discovery Service),该服务可以让程序自动发现代理服务器,WPAD 可以借助 DNS 服务器或 DHCP 服务器来查询代理自动配置(PAC)文件的位置。关闭掉Internet选项-连接-局域网设置-自动检测设置或者禁用WPAD服务后重新运行,发现正常了。

    为什么WPAD服务会阻塞呢,调用CertGetCertificateChain时抓取WPAD服务dump,发现WPAD会调用gethostname获取本地主机名,然后调用getaddrinfo解析,最终阻塞在了Nbt_ResolveName。
    在这里插入图片描述
    查阅资料发现解析本地主机名超时和netbios以及dhcp有关系,虚拟机下的Windows本地连接会生成一个“连接特定的DNS后缀”localdomain,生成手动填写本地连接ip地址也正常了。
    在这里插入图片描述

    展开全文
  • windows远程桌面加上SSL证书认证整理.pdf
  • 解决使用drivermonitor.exe加载驱动文件时提示:windows无法验证此文件的数字证书等问题解决使用drivermonitor.exe加载驱动文件时提示:windows无法验证此文件的数字证书等问题
  • 2000和2003版本需要替换,那为什么还要用2008?低版本都停止更新了相对来说安全。2008替换此文件,就能出现通过使用智能卡证书注册站来为另一用户申请一个智能卡证书啦。
  • 使用openssl工具在Windows和Linux下自制证书一致 创建ca、server、client三个文件夹存放制作好的证书
  • 解决windows xp因为ssl证书问题无法上网的补丁
  • 关于SSL证书的用处就讲啦,需要部署的朋友应该已经了解过了,直接进入正题 安装Apache, 下载安装Apache时请下载带有SSL版本的Apache安装程序. 第一步当然是获取证书啦 我是在腾讯云上申请的,很快几分钟就搞定了...
  • 在Window Server 2012中新建域时,碰到“无法新建域,因为本地administrator账户密码符合要求” 的问题,具体解决方法如下,有类似问题的朋友可以参考下哈
  • 受益于Windows证书管理,该项目本机支持使用Windows用户证书或智能卡(例如Yubikey PIV)进行身份验证。 总览 特征 本机使用智能卡,而无需在Windows中安装任何驱动程序(仅PIV) 支持OpenSSH证书(因此您可以将...
  • 问题是,如何解决“证书无效并且能用于验证本网站身份”的错误?。如何解决“证书无效,能用于验证本网站的身份”错误?下面是详细信息:我有一个签名的小已经工作正常,直到我更新Java来8u25(1.8.0_25-B18)。...
  • 需要一个全新的环境 ...Windows不加域,直接安装ad域证书,全都默认安装就可以了 没有加域,所以是独立根 Windows导出证书 cmd打开mmc控制平台 ctrl+m 打开添加管理单元,把证...
  • Windows Server 2016 企业CA证书的应用

    千次阅读 2021-02-28 19:50:46
    提前部署好AD域控环境,以下直接从搭建证书服务器开始 点击添加功能和角色 找到如下服务勾选即可 角色服务选择如下功能即可 然后等待安装即可 安装完成以后点击黄色感叹号哪里进入如下界面进行配置 设置类型为...
  • 这篇文章将详细介绍微软证书漏洞CVE-2020-0601,并讲解ECC算法、Windows验证机制,复现可执行文件签名证书的例子。 这些基础性知识不仅和系统安全相关,同样与我们身边常用的软件、文档、操作系统紧密联系,希望这些...
  • 数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个...
  • windows 驱动验证数字证书

    千次阅读 2016-01-12 16:12:22
    Kernel mode display-only miniport driver (KMDOD) sample Installation In Microsoft Visual Studio, press F5 to build the sample and then deploy it to a target machine. For more info, see ...
  • Windows证书管理

    千次阅读 2020-06-28 17:08:56
    windows里提供了数字证书管理工具,用于管理我们电脑里安装的各种数字证书,首先数字证书是一种电子文件,那么它有一定的格式,也有拓展名。 证书扩展名 Windows中的证书扩展名有好几种,比如.cer和.crt。通常而言...
  • 根据当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内 修改日期为2019仍然无效(虚拟机里操作的,不知道跟这个有没有关系),下载离线安装包顺利装上。 .NET Framework 4.6.2 脱机安装程序Windows ....
  • Windows家庭版 解决IIS 万维网安全中没有windows身份验证Windows Authentication) 打开启动或关闭Windows功能,IIS菜单下万维网服务的安全性缺少Windows身份验证 解决方法 1.打开 C:\Windows\servicing\Packages...
  • 问题:远程桌面无法连接到远程计算机,因为从远程计算机接收的身份验证证书已过期或无效。在某些情况下,客户端和服务器计算机之间的较大时间差异也可能会导致此错误。解决办法:1、登录服务器使...
  • 各位同胞,最近遇到一个棘手的问题,每次打开outlook均会提示以下信息:==============================================您连接到的服务器正在使用一个无法验证的安全证书。已处理证书链,但是在受信任提供程序...
  • CAcreateserial -in private/server.csr -out certs/server.crt -extfile private/server.dns.ext 由于Chrome浏览器加载证书时要读取扩展信息验证域名或者IP,如果没有这个信息,则会发生Chrome能识别证书通用名称...
  • windows域控+证书服务器+IAS+Cisco AP 做radius认证 使无线用户使用证书通过Cisco AP经过证书认证与网络连接,非常好用,经过本人新自验证windows 2003 域控,证书服务器+cisco 1242AP,用intel和dell无线网卡做过...
  • windows安装证书后无法信任问题解决

    千次阅读 2020-12-02 11:04:16
    问题场景:使用whistle抓取https的数据包时,需要安装rootCA证书,安装完成之后,发现无法访问https的请求,经查询发现,rootCA证书没有安装到【受信任的根证书颁发机构】下面。 解决方案: win+R之后,键入mmc,...
  • 来自文章:visual studio卡在正在下载/正在验证进度条(进行安装)中的资源

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,159
精华内容 21,663
关键字:

windows验证不了证书