证书spec, X509, 类似规定了一个目录结构。其中重要内容包括

  • issuer: who isued this certificate
  • subject: the ID of this certificate
  • public key:
  • validate period
  • sign: the sha of this certificate, encritpted with the issuer's private key. (This is the mechanism how to verify the certificate)
  • in extention, other there is a link to get certificate of issuer.

DN (distingushed name)

  • include C(country), ST(state), O(organization), OU(部门,可以多个), CN(common name)
  • both Issuer and Subject are DN.

Certificate formate

  • PEM, base64 encoded DER file, easy to be edited
  • DER, CER, CRT.  same, DER, Distinguished Encoding Rules. openssl -inform der -in a.cert -text -noout
  • P12. Windows specific, contails both public key and private key. So the file itself should be encriypted.
  • p7b, p7c. CRL (certificate revocation list) 常用于证书吊销文件,不包括key
  • JKS. Java Key storage(Java 专利)利用 keytool 管理

应用

  1. Safari and macOS, managed by "keychain access". The each keychain is stored in separated directory. login means the current login user.
  2. Java, keytool 管理,has different location from OS(e.g. /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/security/cacerts), so even safari downloaded a Root CA for a website, Java may still not work.  
    1. keytool -list -keystore cacerts
  3. Python: 
    1. public certs stored in certifi module ([py_home]/site-packages/certifi/cacert.pem), then all python modules relying on certifi (e.g. requests) could load certs for ssl verification
    2. However, pip is a standalone package that contains its own requests/certifi module and public cert storage.  One solution is to wrap original certifi.where() and pip._vendor.requests.certs.where() method to force return path ‘/etc/pki/tls/cert.pem’. Make sure all certs are store in it.
  4. CN name: https://security.stackexchange.com/questions/40026/openssl-x509-whats-the-significance-of-cn-common-name
  5. curl, use curl -v to see with cacert it is using, maybe /etc/ssl/cacert.pem, makeby $HOME/anaconda/ssl/cacert.pem. 
    1. 手动指定使用某个证书来验证网站 curl --cacert mycertificate.cer -v https://www.google.com

References:

  • cert format,

    • https://serverfault.com/questions/9708/what-is-a-pem-file-and-how-does-it-differ-from-other-openssl-generated-key-file
    • https://www.cnblogs.com/guogangj/p/4118605.html
  • https://en.wikipedia.org/wiki/X.509  (X.509 内容说明) , 
    •  PKIX (Public Key Infrastructure X.509)
    •  OCSP (Online Certificate Status Protocol)
  • verify certificate: https://stackoverflow.com/questions/188266/how-are-ssl-certificates-verified
  • Certificate Chain: 
    • https://ssl.comodo.com/articles/understanding-an-ssl-certificate-chain.php
    • https://support.dnsimple.com/articles/what-is-ssl-certificate-chain/

Root certificate

  • Intermediate certifcate

    • client certificate. In SSL, webserver might need to veifiy the certificate of the client. Usually it doesn't.

About certificate的更多相关文章

  1. 钉钉开放平台demo调试异常问题解决:hostname in certificate didn't match

    今天研究钉钉的开放平台,结果一个demo整了半天,这帮助系统写的也很难懂.遇到两个问题: 1.首先是执行demo时报unable to find valid certification path to ...

  2. 异常处理之“The remote certificate is invalid according to the validation praocedure.”

    参考文章:http://brainof-dave.blogspot.com.au/2008/08/remote-certificate-is-invalid-according.html 参考文章:h ...

  3. The certificate used to sign ***has either expired or has been revoked. An updated certificate is required to sign and install the application

    真机测试的时候弹出这样的提示:The certificate used to sign ***has either expired or has been revoked. An updated ce ...

  4. Domino----The Address Book does not contain a cross certificate capable of validating the public key.

    The Address Book does not contain a cross certificate capable of validating the public key. 地址本不包含交叉 ...

  5. Your account already has a valid iOS Distribution certificate!

    iOS 发布提交出现:Your account already has a valid iOS Distribution certificate!问题解决 转载的链接   http://www.jia ...

  6. configure Git to accept a particular self-signed server certificate for a particular https remote

    get the self signed certificate put it into some (e.g. ~/git-certs/cert.pem) file set git to trust t ...

  7. [nodejs] Error: unable to verify the first certificate

    Error: unable to verify the first certificate Solution npm config set registry http://registry.npmjs ...

  8. Rails 之微信开发 : OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

    微信公众平台,使用Ruby On Rails + Win7 在取得OpenID时,如果简单的使用http.get方法,会出现如下 SSL_connect returned=1 errno=0 stat ...

  9. Fiddler 手机端证书安装No root certificate was found

    测试过程中发现在浏览器中访问代理服务器及端口,不通,提示要安装证书. 点击证书安装时,提示错误: No root certificate was found,Have you enabled HTTP ...

  10. 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系

    1.概念介绍 如果你拥有一个开发者账户的话,在iOS Dev Center打开Certificates, Indentifiers & Profiles,你就可以看到如下的列表: Profil ...

随机推荐

  1. NGINX轻松管理10万长连接

    先说说服务为什么使用HTTPs长连接技术?有如下几个原因:对响应时间要求较高:服务走的是公网,客户端与服务端的TCP建立的三次握手和断开的四次握手都需要40ms左右(真实数据包计算出来的),共需要80 ...

  2. python_练习04

    选课系统 角色:学校.学员.课程.讲师 要求: 1.创建北京.上海2所学校 2.创建linux.python.go3个课程,linux.python在北京开,go在上海开3.课程包含,周期,价格,通过 ...

  3. nginx入门之编译安装

    nginx是什么 nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件.它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用. nginx比它大哥apache性 ...

  4. 小组团队项目的NABCD分析

    N:1.学校中有很多学生是外省的,然后不知道附近有什么地方周末可以去玩,有时候想记录自己每天发生的乐趣事情并且想跟别人分享.2.学校中学生有很多用不到的东西但是联系不到合适的买家.A:我们可以做一个软 ...

  5. C语言博客作业01--分支、顺序结构

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 通过本章的学习,学会了三种基本结构以及一些基本的运算知识,学会编写简单的程序,跟着老师的步子学习基本的东西都能 ...

  6. python将文本写入剪切板

    import pyperclip pyperclip.copy('The text to be copied to the clipboard.') spam = pyperclip.paste() ...

  7. poj 1141 Brackets Sequence 区间dp,分块记录

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35049   Accepted: 101 ...

  8. python 基础 ----- 变量

    ------  python注释 注释的作用:代码提示,运行时忽略不必要的代码 注释的三种方式: 1.“#” 单行注释 2.多行注释   三个单引号  和三个双引号都可以 注释的快捷键 Ctrl + ...

  9. HTTPClient to use http/https protocol to send request

    使用了spring boot, gradle, commons-httpcomponent3. 目前httpclient 已经有了版本4. https://github.com/lvfe/httpCl ...

  10. IDEA配置

    关于IDEA的配置 配置注释模板 CTRL_SHIFT_S,在Live Templates中新增一个TemplateGroup,然后再新建两个模板,如下图: 新增cc-ClassComment /** ...