生成簽名證書
Ⅰ 數字證書有哪些主要欄位並簡述證書的簽名生成過程。
用戶首復先產生自己的密鑰對,制並將公共密鑰及部分個人身份信息傳送給認證中心。認證中心在核實身份後,將執行一些必要的步驟,以確信請求確實由用戶發送而來,然後,認證中心將發給用戶一個數字證書,該證書內包含用戶的個人信息和他的公鑰信息,同時還附有認證中心的簽名信息。用戶就可以使用自己的數字證書進行相關的各種活動。數字證書由獨立的證書發行機構發布。數字證書各不相同,每種證書可提供不同級別的可信度。可以從證書發行機構獲得您自己的數字證書。
Ⅱ 如何創建一個自簽名的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年,因為時間越長,就越有可能被黑客破解。所以超長有效期是它的一個弊端。