生成签名证书
Ⅰ 数字证书有哪些主要字段并简述证书的签名生成过程。
用户首复先产生自己的密钥对,制并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。
Ⅱ 如何创建一个自签名的SSL证书
创建自签名证书的步骤
注意:以下步骤仅用于配置内部使用或测试需要的SSL证书。
第1步:生成私钥
使用openssl工具生成一个RSA私钥
$ openssl genrsa -des3 -out server.key 2048
说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。
注意:生成私钥,需要提供一个至少4位的密码。
第2步:生成CSR(证书签名请求)
生成私钥之后,便可以创建csr文件了。
此时可以有两种选择。理想情况下,可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书(很贵)。另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名,具体操作如下:
$ openssl req -new -key server.key -out server.csr
说明:需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:joyios
Organizational Unit Name (eg, section) []:info technology
Common Name (e.g. server FQDN or YOUR name) []:demo.joyios.com
Email Address []:[email protected]
第3步:删除私钥中的密码
在第1步创建私钥的过程中,由于必须要指定一个密码。而这个密码会带来一个副作用,那就是在每次Apache启动Web服务器时,都会要求输入密码,这显然非常不方便。要删除私钥中的密码,操作如下:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
第4步:生成自签名证书
如果你不想花钱让CA签名,或者只是测试SSL的具体实现。那么,现在便可以着手生成一个自签名的证书了。
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
说明:crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。
第5步:安装私钥和证书
将私钥和证书文件复制到Apache的配置目录下即可,在Mac 10.10系统中,复制到/etc/apache2/目录中即可。
需要注意的是,在使用自签名证书时,浏览器会提示证书不受信任,如果你是对外网站使用,建议还是去CA机构申请可信的SSL证书。
Ⅲ 如何创建一个自签名的SSL证书
使用openSSL生成自签名CA和自签名证书:网页链接
自签名SSL证书安全隐患及安全风险:网页链接
Ⅳ 如何制作和应用数字签名证书
需要准备的工具:makecert.exe、cert2spc.exe、pvk2pfx.exe、signtool.exe。
在MS的SDK6.0中有个证书生成工具makecert.exe, 你可以使用这个工具来生成测试用的证书。
第一步,生成一个自签名的根证书(issuer,签发者)。
>makecert -n "CN=Root" -r -sv RootIssuer.pvk RootIssuer.cer
这个时候,会弹出提示框,首先给RootIssuer.pvk文件设置私钥保护口令;
然后,再次输入这个口令用私钥(在RootIssuer.pvk文件中)来给公钥(在RootIssuer.cer文件中)加密。
第二步,使用这个证书签发一个子证书(使用者,subject)。
>makecert -n "CN=Child" -iv RootIssuer.pvk -ic RootIssuer.cer -sv ChildSubject.pvk ChildSubject.cer
此时,会弹出提示框先给这个子证书的私钥文件ChildSubject.pvk设置保护口令;
然后,输入这个子证书的私钥(在ChildSubject.pvk中)口令来保护子证书的公钥(在ChildSubject.cer中)。
接下来会提示输入根证书私钥(在RootIssuer.pvk中)口令来签发整个子证书(公钥和用户信息)。
如果你还要签发更多的子证书,类似的,使用这个证书来签发再下层的证书,前提是ChildSubject证书也可以用于签发(作为Issuer)用途。
备注:
(1)如果你需要一个交互证书,用于安全通信,那么,加入选项 -sky exchange;
(2)如果你需要一个签名证书来签发证书或者二进制文件,那么,加入选项 -sky signature.
(3)如果你需要一个客户端证书来标志你的身份,或者个人信息保护(电子邮件),那么,选项-n 中的E字段是不可缺少的。
举例:-n "CN=公司名称, E=E-MAIL地址, O=组织名称, OU=组织单位, C=国家, S=省份(州), P=县城"
其他辅助工具:
1) 公钥证书格式转换成SPC。 cert2spc.exe
>cert2spc TestRoot.cer TestRoot.spc
.spc 意思是 软件发布者证书(Software Pulisher Cerificate).
2) 将公钥证书和私钥合并成一个PFX格式的证书文件。pvk2pfx.exe
>pvk2pfx -pvk TestRoot.pvk -spc TestRoot.spc -pfx TestRoot.pfx
输入TestRoot.pvk的保护口令来合并.pvk和.spc文件,如果你不设置即将合并出来的TestRoot.pfx的保护口令的话,这个保护口令和输入文件TestRoot.pvk的保护口令一样。(备注:直接从cer文件也可以,不一定要得到SPC文件).
3) 签名工具。signtool.exe
二进制文件数字签名.为了保证二进制文件的完整性,数字签名是一个好的方法。
以下命令启动一个有图形界面的文件签名工具向导:
>signtool wizard
以下是命令行方式的签名:
>signtool sign /f "pfx文件的全路径" /p "pfx文件的保护口令" /t "http://timestamp.verisign.com/scripts/timstamp.dll" /d "本次签名的描述" "被签名的程序的全路径"
Ⅳ 自签名证书和私有CA签名的证书的区别 创建
自签名证书是由创建它的人签署的证书,而不是由受信任的证书机构签发的证书。自签名证书普遍存在严重的安全漏洞,极易受到攻击,而且通常不受浏览器信任。因此,不建议大家使用自签名证书,以免造成巨大的安全隐患和安全风险,特别是重要的网银系统、网上证券系统和电子商务系统。
使用自签名证书两个主要的弊端:
1)访问者的连接可能会被劫持,从而攻击者便能查看所有发送的数据(因此违背了加密连接的目的)
2)证书不能向受信任的证书那样进行撤销。
Ⅵ 如何生成Android的签名证书
cmd命令生成android签名证书,有空在写一篇eclipse导出带签名的apk,这里面包括生成新的签名。现在还是讲讲在cmd怎么操作生成签名证书。
1、dos下进入JDK的bin目录
运行如下命令:keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
(-validity 20000代表有效期天数),命令完成后,bin目录中会生成android.keystore
示例:
C:\Program Files (x86)\Java\jdk1.8.0_25\bin>
keytool -genkey -alias test.keystore -keyalg RSA -validity 20000 -keystore d:\test.keystore
ps:-alias test 生成的keystore别名,-keyalg RSA 加密和数字签名的算法,-validity 20000 有效天数
输入密钥库口令:123456
再次输入新口令:123456
您的名字与姓氏是什么?
[Unknown]: rob
您的组织单位名称是什么?
[Unknown]: abc
您的组织名称是什么?
[Unknown]: abc
您所在的城市或区域名称是什么?
[Unknown]: guangzhou
您所在的省/市/自治区名称是什么?
[Unknown]: guangzhou
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=rob, OU=abc, O=abc, L=guangzhou, ST=guangzhou, C=cn是否正确?
[否]: y
输入 <test> 的密钥口令
(如果和密钥库口令相同, 按回车):
如果没有错误则回去查看D盘根目录下,多了test.keystore
所以第一次输入的是,密钥库的密码。
最后输入时密钥别名的密码。到这里生成签名就搞定啦。
2、查看md5指纹验证
输入keytool -list -v -alias androiddebugkey -keystore 再加上刚刚从红色框中复制出来的内容
我这里的就是keytool -list -v -alias androiddebugkey -keystore C:\Users\ZLQ\.android\debug.keystore了,回车
-alias androiddebugkey 这个是别名
-keystore C:\Users\ZLQ\.android\debug.keystore 具体位置的密钥库
要求输入密码,密码是android,至此就可以拿到MD5认证指纹了
Ⅶ 什么是自签名SSL证书
自己生成的SSL证书,不是CA机构颁发的SSL证书,称之为自签名证书。
解释原因:
- 受信任的SSL证书:会被浏览器信任认可,安全加密服务与安全扫描相关CA配套服务。
自签署的SSL证书:不会被浏览器信任,数据被泄漏级劫持安全漏洞安全风险较高。
自签名主要风险:
浏览器的地址栏会提示风险不安全网站。
小程序或APP无法应用与支持。
无法实现信用与接口交易行为。
网页会被劫持,被强制插入广告或跳转到其它网页。
用户数据明文传输,隐私信息被中间劫持。
极容易被劫持和钓鱼攻击。
自签名安全隐患:
自签证书最容易受到SSL中间人攻击
自签证书支持不安全的SSL通信重新协商机制
自签证书支持非常不安全的SSL V2.0协议
自签证书没有可访问的吊销列表
自签证书使用不安全的1024位非对称密钥对
自签证书证书有效期太长
自签证书普遍存在严重的安全漏洞,极易受到攻击
解决方法:Gworg申请可信SSL证书。
Ⅷ 如何发布android 应用程序,app增加签名证书
Android系统要求,所有的程序经过数字签名后才能安装。Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系。证书不是用于用户控制哪些程序可以安装。证书不需要授权中心来签名:Android应用程序上使用自己签名的证书是完全允许且普遍的。
理解Android应用程序签名有以下几个重要点:
·所有的应用程序都必须签名。系统不会安装任何一个不签名的程序。
·你可以使用自己的证书来签名。不需要任何授权中心。
·当你要为最终用户发布你的应用程序的时候,你必须签入一个合适的密钥。你不可以发布程序的时候还使用SDK工具签入的DebugKey。
·系统只在安装应用程序的时候检测证书的有效期。如果应用程序在安装之后证书失效了,那么,应用程序还是可以正常工作。
·你可以使用标准工具——Keytool和Jarsigner——生成Key并签名apk文件。
·一旦你为应用程序签名了,一定要使用zipalign工具来优化最终的APK包。
Android系统不会安装和运行没有正确签名的应用程序。这条规则适用于任何运行Android系统的地方,不管是真机还是模拟器。正是由于这个原因,你必须在模拟器或真机上运行/调试程序之前对程序进行签名。
当你调试应用程序时,AndroidSDK工具替你对应用程序进行了签名。Eclipse的ADT插件和Ant编译工具都提供了两种签名模式——Debug模式和Release模式。
·当开发和测试时,你可以使用Debug模式。在Debug模式下,编译工具使用内嵌在JDK中的Keytool工具来创建一个keystore和一个key(包含公认的名字和密码)。在每次编译的时候,使用这个DebugKey来为apk文件签名。由于密码是公认的,在每次编译的时候,也不需要提示你输入keystore和key密码。
·当你的程序准备发布时,你必须在Release模式下,使用密钥来为apk文件签名。有以下两种方式可以做到:
1.命令行中使用Keytool和Jarsigner。在这个方法中,首先需要编译出一个未签名的apk。然后使用Jarsigner(或相似的工具),用你的密钥为apk手动签名。如果你没有合适的密钥,你可以运行Keytool来手动生成自己的keystore/key。
2.使用ADT导出向导。如果你使用Eclipse/ADT插件进行开发,你可以使用导出向导来编译程序,生成密钥(如果需要),并为apk签名,所有这些操作都在导出向导中。一旦你的程序签名了,别忘了运行zipalign来为apk进行额外的优化。
签名策略
应用程序签名的某些方面可能会影响应用程序的开发,特别是你打算一起发布多个应用程序的时候。一般来说,推荐的策略是在整个应用程序寿命内,所有的程序签上相同的证书。
以下有几个应该这么做的原因:
·应用程序升级——当你对应用程序进行升级时,如果你想用户平稳的升级,那么,你就需要签上相同的证书。当系统安装一个升级应用程序时,如果新版本的证书与老版本的证书有匹配的话,那么,系统才会允许进行升级。如果你没有为版本签上合适的证书,当你安装时,你需要给应用程序指定一个新的包名——在这种情况下,用户安装的新版本,被当作是一个全新的应用程序。
·应用程序模块化——如果应用程序请求的话,Android系统允许签有相同证书的应用程序运行在相同的进程里,这样,系统就会把它们看作是一个单一的应用程序。用这种方法配置应用程序,用户可以选择更新每个独立的模块。
·代码/数据权限共享——Android系统提供了基于签名的权限检查,因此,如果应用程序间签有特定的证书,那么,它们之间可以共享功能。通过多个程序签有相同的证书并且使用基于签名的权限检查,你的程序可以以一种安全的方式共享代码和数据。还有一个决定签名策略的重要因素是:如何设定key的有效期。
·如果你计划支持单个应用程序的升级,你需要确保你的key拥有一个超过期望的应用程序生命周期的有效期。推荐使用25年或更多的有效期。当你的key过期了,用户也就不能平稳的更新到新版本了。
·如果你想给多个无关的应用程序签上相同的key,那么,你必须确保key的有效期超过所有应用程序所有版本的生命周期,包括将来有可能添加到这一阵营的程序。
·如果你想在AndroidMarket上发布你的程序,key的有效期必须在2033.10.22以后。Market服务器强制这一要求,目前是保证用户可以平稳的更新他们的程序。
当你设计应用程序时,一定要把这些点记在脑子里,并且使用一个合适的证书来为应用程序签名。
签名的基本设定
在你开始之前,你必须保证Keytool对SDK编译工具来说是可利用的。多数情况下,你可以通过设置JAVA_HOME环境变量来告诉SDK编译工具如何找到Keytool。另外,你还可以添加JDK中Keytool的路径到PATH的变量里。
如果你在Linux上开发,并且使用GNU编译器来编译Java,那么,请确保系统是使用JDK中的Keytool,而不是gcj。如果Keytool已经在你的PATH中,它有可能是对/usr/bin/keytool的符号链接。在这种情况下,检查符号链接的目标,确保它是指向JDK中的Keytool。如果你打算对公众释放你的应用程序,你还需要Jarsigner工具。Jarsigner和Keytool都包含在JDK中。
Debug模式下签名
Android编译工具提供了Debug签名模式,使得开发和调试应用程序更加容易,而且还满足Android系统的签名要求。当使用Debug模式编译你的app时,SDK工具会调用Keytool工具自动创建一个Debug的keystore和key。然后,这个Debugkey会自动用于apk的签名,这样,你不需要使用你自己的key来为应用程序包签名。
SDK工具使用预先定义好的名字/密码来创建Debugkeystore/key:
·Keystore名字:“debug.keysotre”
·Keystore密码:“android”
·Key别名:“androiddebugkey”
·Key密码:“android”
·CN:“CN=AndroidDebug,O=Android,C=US”
如果需要的话,你可以改变Debugkeystore/key的位置和名字,或者提供一个自定义的Debugkeysotre/key。然而,任何自定义的Debugkeystore/key必须使用和默认Debugkey(上面描述的)相同的名字和密码。(在Eclipse/ADT中,操作Windows>Preferences>Android>Build实现。)
注意:你不能将签有Debug证书的应用程序发布给公众。
Eclipse用户
如果你在Eclipse/ADT下开发(并且已经按照上面描述的“签名的基本设定”配置了Keytool),Debug模式下签名默认是开启的。当你运行或是调试应用程序时,ADT会使用Debug证书进行签名,并运行zipalign,然后安装到选择的模拟器或是连接上的设备。整个过程不需要你参与,前提是ADT能访问Keytool。
Ant用户
如果你使用Ant来编译你的apk文件,需要在ant命令中添加debug选项来开启Debug签名模式(假设你正在使用由android工具生成build.xml文件)。当你运行antdebug来编译你的程序时,编译脚本会生成一个keystore/key,并为apk进行签名。然后脚本会使用zipalign工具对apk进行对齐处理。整个过程不需要你参与。阅读“其它IDE下开发:Debug模式编译”来了解更多的信息。
Debug证书过期
Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它创建之日起,1年后就会失效。
当证书失效时,你会得到一个编译错误,在Ant编译上,
错误如下:
debug:
[echo]Packagingbin/samples-debug.apk,andsigningitwithadebugkey...
[exec]DebugCertificateexpiredon8/4/083:43PM
在Eclipse/ADT中,Android控制台上你将会看到一个相似的错误。
为了解决这个问题,只需要删掉debug.keystore文件即可。AVD默认存储的位置在:~/.android/avd(OSX和Linux),C:DocumentsandSettings\.android(WindowsXP),C:Users\.android(WindowsVista)。
当下一次编译的时候,编译工具会重新生成一个新的keystore和Debugkey。
Release模式下签名
当你的程序准备好释放给其它用户时,你必须:
1.获取一个合适的密钥
2.在Release模式下编译程序
3.使用密钥签名程序
4.对齐APK包
如果你是使用Eclipse/ADT插件开发,你可以使用导出向导来完成编译、签名和对齐等操作。在整个过程中,导出向导甚至还可以生成一个新的keystore和密钥。因此,如果你使用Eclipse,你可以直接跳到“使用EclipseADT编译和签名”。
获取一个合适的密钥为了进行程序的签名,首先,你必须有一个合适的密钥。密钥指:
·个人持有。
·代表个人、公司或组织实体的身份。
·拥有一个有效期。有效期推荐超过25年。
如果你在AndroidMarket上发布你的程序,需要注意一点的是:程序的有效期需要在2033.10.22之后。你不能上传一个应用程序,而它的key的有效期是在这个日期之前。
·不是由AndroidSDK工具生成的Debugkey。
如果你没有一个合适的key,你一定要使用Keytool来生成一个。如“基本设定”中描述的,确保Keytool可用。
为了用Keytool生成一个key,使用keytool命令并传入一些可选参数,如下表所示。
警告:确保密钥的安全。一定要阅读“安全储存你的密钥”中讨论如何确保你的密钥的安全以及这对你和用户为何如此重要。尤其是,当你生成你的密钥时,一定要为keystore和key使用强密码。
Ⅸ 如何创建一个自签名的SSL证书
自签名SSL证书只适合内部使用或测试需要,网站使用自签名SSL证书存在极大的风险:
一:自签SSL证书最容易被假冒和伪造,被欺诈网站利用
自签SSL证书是可以随意签发的,不受任何监管,您可以自己签发,别人也可以自己签发。如果您的网站使用自签SSL证书,那黑客也可以伪造一张一模一样的自签证书,用在钓鱼网站上,伪造出有一样证书的假冒网银网站!
二:部署自签SSL证书的网站,浏览器会持续弹出警告
自签SSL证书是不受浏览器信任的,用户访问部署了自签SSL证书的网站时,浏览器会持续弹出安全警告,极大影响用户体验。
三:自签SSL证书最容易受到SSL中间人攻击
用户访问部署了自签SSL证书的网站,遇到浏览器警告提示时,网站通常会告知用户点击“继续浏览”,用户逐渐养成了忽略浏览器警告提示的习惯,这就给了中间人攻击可乘之机,使网站更容易受到中间人攻击。
典型的SSL中间人攻击就是中间人与用户或服务器在同一个局域网,中间人可以截获用户的数据包,包括SSL数据包,并做一个假的服务器SSL证书与用户通信,从而截获用户输入的机密信息。当网站被假的SSL证书替换时,浏览器会警告用户此证书不受信任,需要用户确认是否信任此证书,用户习惯性点击“继续浏览”,中间人攻击轻而易举的实现了。
四:自签SSL证书没有可访问的吊销列表
这也是所有自签SSL证书普遍存在的问题,做一个SSL证书并不难,使用OpenSSL几分钟就搞定,但真正让一个SSL证书发挥作用就不是那么轻松的事情了。要保证SSL证书正常工作,其中一个必备功能是要让浏览器能实时查验证书状态是否已过期、已吊销等,证书中必须带有浏览器可访问的证书吊销列表。如果浏览器无法实时查验证书吊销状态,一旦证书丢失或被盗而无法吊销,就极有可能被用于非法用途而让用户蒙受损失。此外,浏览器还会发出“吊销列表不可用,是否继续?”的安全警告,大大延长浏览器的处理时间,影响网页的流量速度。
Ⅹ 如何创建一个自签名的SSL证书
自签名SSL证书存在很大的安全隐患和风险,不建议大家安装。具体风险如下:
第一、被“有心者”利用
其实“有心者”指的就是黑客。自签名SSL证书你自己可以签发,那么同样别人也可以签发。黑客正好利用其随意签发性,分分钟就能伪造出一张一模一样的自签证书来安装在钓鱼网站上,让访客们分不清孰真孰假。
第二、浏览器会弹出警告,易遭受攻击
前面有提到自签名SSL证书是不受浏览器信任的,即使网站安装了自签名SSL证书,当用户访问时浏览器还是会持续弹出警告,让用户体验度大大降低。因它不是由CA进行验证签发的,所以CA是无法识别签名者并且不会信任它,因此私钥也形同虚设,网站的安全性会大大降低,从而给攻击者可乘之机。
第三、安装容易,吊销难
自签名SSL证书是没有可访问的吊销列表的,所以它不具备让浏览器实时查验证书的状态,一旦证书丢失或者被盗而无法吊销,就很有可能被用于非法用途从而让用户蒙受损失。同时,浏览器还会发出“吊销列表不可用,是否继续?”的警告,不仅降低了网页的浏览速度,还大大降低了访问者对网站的信任度。
第四、超长有效期,时间越长越容易被破解
自签名SSL证书的有效期特别长,短则几年,长则几十年,想签发多少年就多少年。而由受信任的CA机构签发的SSL证书有效期不会超过2年,因为时间越长,就越有可能被黑客破解。所以超长有效期是它的一个弊端。