① openssl访问https,怎么获取证书
1、获取SSL证书,准备域名。
2、淘宝:Gworg获取HTTPS证书。
3、拿到证书后,根据服务器环境安装。
4、APACHE安装SSL证书:网页链接
5、Nginx安装SSL证书:网页链接
6、如果看不到安装教程,直接叫Gworg代理安装。
② SSL证书错误怎么办为什么会出现证书错误
SSL证书错误的原因及解决方法:
1、SSL证书包含域名与网址不一致
每一个ssl证书所对应的域名都具有唯一性,是一个全域名FQDN。当网站出具的证书所包含的域名和网站域名不一致,系统就会自动发出报告,提示证书域名不匹配。
解决方法:需要重新申请ssl证书。如有相同主域名的多站点,则要申请多域名ssl证书。
2、网站证书不是由受信任的机构颁发
这是因为证书不在浏览器厂商的受信任的列表中。可通过手动添加证书安装到浏览器的“信任列表”。
解决方法:浏览器中选项→内容选项卡→证书-→导入即可。
3、网站证书已过期或还未生效
出现这种情况一般是电脑系统日期错误,另一种就是证书过了有效期,则需要续费。
解决方法:可查看该证书信息的有效起止日期,确定证书是否在有效期内,如在的话需查看电脑日期是否正确。否则就是第二种原因,ssl证书不在有效期内,需尽快联系证书颁发厂商,进行续费。
4、页面包含有不安全的内容
目前都提倡每一个页面使用HTTPS,则网站所有内容都必须是HTTPS。如果遇到图片、JS脚本,FLASH插件是通过HTTP方式去调用的,就会发生这种错误。
解决方法:将调用的元素http改成HTTPS即可,然后刷新测试ssl问题是否已经解决。
5、浏览网页的时候突然弹出SSL连接错误
解决方法:按下“Win+R”组合键打开运行,在运行框中输入:inetcpl.cpl 点击确定打开“internet 选项”;切换到【高级】选项卡;在设置框中勾选“使用ssl 3.0”“使用ssl2.0””点击应用并点击确定,重启浏览器。
③ 怎样给openssl增加根证书
2. 生成Root CA私钥与证书:
2.1 先生成RootCA私钥--》使用私钥生成CSR--》生成自签名根证书。用来给二级CA证书签名。
3. 生成二级CA 私钥与证书:(假如有两个二级CA, 分别负责管理服务器端和客户端证书)
3.1 先生成ServerCA私钥--》使用私钥生成CSR--》使用根证书签名生成二级证书。用来给服务器证书签名。
3.2 先生成ClientCA私钥--》使用私钥生成CSR--》使用根证书签名生成二级证书。用来给客户端证书签名。
4. 生成服务器端与客户端的私钥与证书:
4.1 先生成ServerA私钥--》使用私钥生成CSR--》使用ServerCA证书签名生成三级证书。
4.2 先生成ClientA私钥--》使用私钥生成CSR--》使用ClientCA证书签名生成三级证书。
4.3 先生成ClientB私钥--》使用私钥生成CSR--》使用ClientCA证书签名生成三级证书
。。。。可以生成N个客户端证书证书结构:RootCA||-------ServerCA| || |--------ServerA||-------ClientCA||--------ClientA||--------ClientB||--------|
5. 导出RootCA的根证书、服务器端和客户端的私钥和证书。
导出时都使用pem格式。
RootCA.pem-------根证书(PEM )
ServerA.pem------服务器端证书(PEM with Certificate chain)
ClientA.pem------客户端证书(PEM with Certificate chain)
ClientB.pem------客户端证书(PEM with Certificate chain)
ServerAKey.pem------服务器端私钥(PEM )
ClientAKey.pem------客户端私钥(PEM )
ClientBKey.pem------客户端私钥(PEM )
6.下面是最重要的一步:生成需要使用的JKS文件。keytool工具不能导入私钥,需要利用到weblogic 提供的一个工具,需要把weblogic.jar加到CLASSPATH。
6.1 生成服务器和客户端的信任证书库:
keytool -import -alias rootca -file RootCA.pem -keystore trust.jks
6.2 生成服务器端身份密钥库:
java utils.ImportPrivateKey -keystore servera.jks -storepass -storetype JKS -keypass -alias servera -certfile ServerA.pem -keyfile ServerAKey.pem
6.3 生成客户端身份密钥库:
java utils.ImportPrivateKey -keystore clienta.jks -storepass -storetype JKS -keypass -alias clienta -certfile ClientA.pem -keyfile ClientAKey.pem 生成其他客户端身份密钥库
7. keytool -list -v -keystore clienta.jks (servera.jks) 可以查看其中的证书链关系。
④ 怎样查看SSL证书的有效期
方法一:直接浏览器上查看
1、使用浏览器访问你的站点域名,然后单击地址栏上面的锁图标进行查看
上面就是如何查看SSL证书是否过期几种方法的介绍,一般来说最常用的方法就是直接在浏览器上进行查看了,方便快捷。
⑤ openssl数字证书验证报错,用户说该证书没有
请检查证书信息是否录入准确,如无错误请重新安装驱动,如果仍有问题可能是因为在安装驱动程序时,电脑上安装的杀毒或防火墙将驱动程序的某些组件屏蔽导致驱动程序安装失败,请暂时关闭杀毒和防火墙重新安装驱动程序。
当本地时间不在证书有效期范围内时,查看证书会显示【证书已过期或未生效】。如果该证书有效,说明本地时间不准,调整为最新时间即可。
⑥ 怎样查看SSL证书的有效期自动续期是否生效
方法一:直接浏览器上查看
1、使用浏览器访问你的站点域名,然后单击地址栏上内面的锁图标进行查容看
上面就是如何查看SSL证书是否过期几种方法的介绍,一般来说最常用的方法就是直接在浏览器上进行查看了,方便快捷。
⑦ 用openssl命令查看ssl证书信息出错,原因
网上的命令不用于windows服务器,还有证书信息在证书本身打开就可以看到,详情加密算法,协议版本可以搜索:SSL工具。
⑧ linux下使用openssl检测PE文件数字签名的证书是否有效
第一个坑: 有效期
windows在判断证书是否有效时不检测证书的有效期, 即使该证书超过有效期好几年了, 只要没有被吊销, 微软仍然认为它是有效的. 但在 openssl 提供的 X509_verify_cert 函数会验证证书的有效期, 因此需要注释掉验证有效期的那部分代码并重新编译 openssl...
OK, 从 openssl 官网 上下载最新的版本, 好吧, 现在还是刚刚修复 Heartbleed 漏洞的 1.0.1g 版本...
下载, 解压, 看下 INSTALL 文档, 先试试可以编译不:
./config
make
运气不错, 不用安装什么依赖直接编译成功. 将代码根目录产生的 libcrypto.a 添加到项目中测试下, OK, 可以使用, 下面开始折腾了~
在 crypto/x509/x509_vfy.c 的 153 行找到 X509_verify_cert 函数(在线查看), 局部变量 ok 缓存每一步验证是否通过, 它依次调用了:
check_issued
check_chain_extensions
check_name_constraints
check_trust
check_revocation
internal_verify
check_policy
其中 internal_verify (在线查看)验证了证书的有效期, 进入这个函数, 在 1654 行找到这个代码:
ok = check_cert_time(ctx, xs);
if (!ok)
goto end;
看看 check_cert_time 函数, 确认是检查 notBefore 和 notAfter, 因此将上面三行代码注释掉, 验证证书时就不会检测有效期了.
然后就是重新编译 openssl, 将 libcrypto.a 集成到项目里了~
第二个坑: unhandled critical extension
搜索了下, 在 openssl 官网上找到这个:
-ignore_critical
Normally if an unhandled critical extension is present which is not supported by OpenSSL the certificate is rejected (as required by RFC5280). If this option is set critical extensions are ignored.
原来是当openssl遇到证书中有它不支持的 未处理的关键扩展(unhandled critical extension ?) 时, 它会拒绝加载该证书.
再搜索下 -ignore_critical, 在 verify.c 中找到如下代码片段:
else if (strcmp(*argv,"-ignore_critical") == 0)
vflags |= X509_V_FLAG_IGNORE_CRITICAL;
然后再使用 X509_STORE_set_flags 函数设置标志位:
X509_STORE *ctx;
...
X509_STORE_set_flags(ctx, vflags);
即可.
第三个坑: certificate signature failure
这个坑填不上了, openssl 说:
7 X509_V_ERR_CERT_SIGNATURE_FAILURE: certificate signature failure
the signature of the certificate is invalid.
在windows下导出证书文件, 直接用 openssl 验证, 在加载证书就会出错, PEM_read_bio_X509 返回为空....
第四个坑: A certificate was explicitly revoked by its issuer.
A certificate was explicitly revoked by its issuer. 是 Sysinternals 提供的工具sigcheck.exe 的检测结果, 把文件拎出来一看, 证书真的被撤销了...
OK, 只好根据证书上的 CRL Distribution Point(CRL 分发点) 提供的 URL 下载 撤销证书列表 文件, 然后在调用 X509_verify_cert 验证证书链之前, 设置填充被撤销的证书列表:
X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); // 读取被撤销的证书列表
STACK_OF(X509_CRL) *sk_X509_CRL_new_null();
#define sk_X509_CRL_push(st, val) SKM_sk_push(X509_CRL, (st), (val)); // sk_X509_CRL_push(STACK_OF(X509_CRL) *crls, X509_CRL *crl);
void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); // 设置被撤销的证书列表
同时, 也要设置检查被撤销证书列表的标志位 X509_V_FLAG_CRL_CHECK, 然后再调用X509_verify_cert 验证证书链即可.
填了第四个坑后又引起了第五个坑(如何获取撤销证书列表)和第六个坑(设置检测撤销证书列表的标识位后, 如果该证书没有撤销证书列表则直接报错)...
第五个坑: 获取撤销证书列表文件
证书上的 CRL Distribution Point(CRL 分发点) 属于扩展属性, 在 PKCS #7: Cryptographic Message Syntax V1.5 上没有相关介绍.
在 StackOverflow 上找到这个问答 Openssl - How to check if a certificate is revoked or not, 其中第二个回答说 CRL 是在 RFC 5280 中定义的, 除了证书中附带被撤销的证书列表以外还有使用 OCSP 协议的, 即使证书撤销列表也分为使用 URL分发点和 LDAP DNs(???)提供的, 目前先考虑使用 URL 作为 CRL分发点 的情况吧.
然而 openssl 没有提供直接获取 CRL 分发点 URL 的API, 那个回答说 Apache 的 mod_ssl 模块有本地 CRL 和 OCSP 检测的实现代码, 但没有说明哪里有检测使用 URL 作为 CRL分发点 的实现方法.
然后又在 frank4dd.com上找到这个代码 certextensions.c, 他给出了一个如何使用 openssl 从 X.509v3 版本的证书文件中提取扩展内容的示例程序, 太感谢 Frank4DD 这位仁兄了~~~
到这里后, 可以直接使用他的示例程序, 根据关键字 Full Name 和 URI 定位 CRL 分发点 的 URL, 也可以看看 openssl 是如何提取这个 URL 的, 然后自己实现一个接口.
如果自作孽使用第二种方法的话, 就编译个 debug 版的 openssl 库, 然后调试跟进X509V3_EXT_print 函数, 一步一步的向下走, 直到走到 GENERAL_NAME_print 函数, 这里就是终点了...然后就知道了 CRL 分发点 的 URL 的编号为 6, 也就是 GEN_URI, 直接取结果吧.
第六个坑: CRL有效期
在windows环境下每次查看PE文件的数字签名时, windows 都会从 CRL分发点 下载吊销证书列表做验证,一般来说, 每个 CRL的有效期是非常短的,大概只有5~20 天的有效期吧, 然而我们不可能像 windows 一样每次查看数字签名时就从CRL分发点下载最新的吊销列表.
另外, windows 遇到过期的 CRL 时不会产生证书链无效的结果, 但 openssl 在遇到过期的 CRL 时就会导致证书链验证失败, 因此在加载和验证 CRL 时, 要忽略 CRL 的有效期.
分析 openssl 源代码, X509_verify_cert 调用 check_revocation , 之后调用 check_cert , 然后再调用 check_crl , 在这个函数里有检测 CRL 有效期的代码:
if (!(ctx->current_crl_score & CRL_SCORE_TIME))
{
ok = check_crl_time(ctx, crl, 1);
if (!ok)
goto err;
}
将其注释掉即可忽略检测 CRL 有效期.
第七个坑: CRL 列表为空导致 openssl 认为没有加载 CRL
9 初始化顺序
10 证书名: key_id