Android面试题-Java安全专题六

Android程序员面试宝典

安全专题

1.6 数字证书

数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。

1.6.1 应用场景

1,交易者身份的确定性、不可否认性、不可修改性
2,对应用进行签名认证(例如Android的apk)

1.6.2 数字证书格式

《Android面试题-Java安全专题六》

数字证书的格式普遍采用的是X.509V3国际标准,一个标准的X.509数字证书包含以下一些内容:
证书的版本信息;
  证书的序列号,每个证书都有一个唯一的证书序列号;
  证书所使用的签名算法;
  证书的发行机构名称,命名规则一般采用X.500格式;
  证书的有效期,通用的证书一般采用UTC时间格式,它的计时范围为1950-2049;
  证书所有人的名称,命名规则一般采用X.500格式;
  证书所有人的公开密钥;
  证书发行者对证书的签名。

1.6.3 数字证书原理

《Android面试题-Java安全专题六》

数字证书是安全领域里的终极武器,SSL通信协议里最核心的东西就是数字证书。他涉及到前面提到的所有知识:对称加密、非对称加密、消息摘要、数字签名等。

数字证书可以通过java自带的KeyTool工具生成,生成后的数字证书一般保管在KeyStore里。KeyStore可以叫做秘钥仓库。

秘钥仓库可以保管3种类型的数据:KeyStore.PrivateKeyEntry(非对称机密里的私钥)、KeyStore.SecretKeyEntry (对称加密里的秘钥)、KeyStore.TrustedCertificateEntry(受信任的证书)

1.6.4 Keyto工具

路径:jre\bin\keytool.exe

《Android面试题-Java安全专题六》

常用命令:
生成keypair
keytool -genkeypair
keytool -genkeypair -alias lisi(后面部分是为证书指定别名,否则采用默认的名称为mykey)
看看keystore中有哪些项目:
keytool -list或keytool -list -v
keytool -exportcert -alias lisi -file lisi.cer
生成可打印的证书:
keytool -exportcert -alias lisi -file lisi.cer –rfc
显示数字证书文件中的证书信息:
keytool -printcert -file lisi.cer
直接双击lisi.cer,用window系统的内置程序打开lisi.cer

1.6.5 Android的keystore相关知识:

debug签名路径:user.android\debug.keystore

《Android面试题-Java安全专题六》

1.6.6 补充

签名证书:
由权威颁发机构颁发给服务器或者个人用于证明自己身份的东西,默认客户端都是信任的。主要目的是用来加密和保证数据的完整性和不可抵赖性
例如根证书机构Symantec颁发给百度的就是签名证书,是受信任的。

《Android面试题-Java安全专题六》

自签名证书:
由服务器自己颁发给自己,用于证明自己身份的东西,非权威颁发机构发布,默认客户端都是不信任的,主要目的是用来加密和保证数据的完整性和不可抵赖性,与签名证书相同.
例如中铁集团(SRCA)办法给12306的证书就是自签名证书,自己给自己颁发的。

《Android面试题-Java安全专题六》

  • 欢迎关注微信公众号、长期为您推荐优秀博文、开源项目、视频

  • 微信公众号名称:Android干货程序员

  • 《Android面试题-Java安全专题六》
    原文作者:马伟奇
    原文地址: https://www.jianshu.com/p/334ef8ba8dca
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞