S60 3rd簽名問題

2021-04-14 01:46:31 字數 2566 閱讀 5533

相信很多朋友只知道s60第三版的軟體安裝前要經過簽名才能安裝到手機裡,並且也知道自已製作個人證書來簽名自已獨一無二的只能在自已手機上執行的軟體了。那為什麼要這樣做,這樣做是什麼原理呢?可能很多朋友也不知道吧?下面就s60第三版軟體安裝提出自己的一些理解,如有什麼不對之處,請高手幫忙糾正。首先,我們要知道什麼是非對稱加密系統

非對稱加密系統中,有兩個金鑰:乙個是公鑰,乙個是私鑰。公鑰是可以向你的一組使用者公開的乙個金鑰,其實就是乙個大的素數。私鑰只有你自己擁有,其他人不能盜取你的私鑰。私鑰其實也是乙個大的素數,公鑰是拿來加密用的。比如,有某乙個人想發資訊給你,你通過安全途徑給他公鑰,他用公鑰對他要發給你的資訊進得加密運算,然後再通過網路傳送加密後的密文給你,雖然有人能盜取這個密文,但他不知道私鑰,他解不了密。而你則可以用私鑰進行解密,私鑰則是用來簽名的。比如,你要發布乙個公告,你就用你的私鑰對公告進行加密運算,然後發布出去,而看公告的人則用公鑰對公告進進行解密運算,如果可以解密,則證明該公告是你發出的,也就相當於驗證了簽名。因此,公鑰和私鑰都有兩個作用: 公鑰用來加密和驗證簽名,私鑰用來簽名和解密。

那在我們的s60第三版的簽名中又是如何運用的呢?

私鑰就是包含在檔案***.key裡的乙個素數,可以1024bit長,也可以2048bit長,當然越長越安全些。公鑰也就是包含在檔案***.cer裡的乙個素數。

公鑰和私鑰都可以用工具makekeys.exe生成,格式如下:

makekeys -cert -password yourpassword -len 2048 -dname "cn=joe bloggs ou=development or=symbian software ltd co=gb

[email protected]

" mykey.key mycert.cer

解釋一下該命令:引數-cert 表示要生成乙個私鑰和乙個公鑰;-password 表示私鑰的密碼,可以不用密碼,所以這個引數可以省略;-len 表示素數的長度,這裡是2048bit;-dname後面的表示該證書的一些描述字串;mykey.key,mycert.cer分別表示私鑰和公鑰存於的檔名。

在dos命令框裡輸入這條命令後,不停的移滑鼠,makekeys.exe就會在當前目錄下生成乙個私鑰mykey.key和乙個公鑰mycert.cer了。

從以上步驟,我們得到的證書和私鑰都是我們自己生成的,也就相當於我們個人發證書給自己,這是不具有什麼公信力的。所以,以這種方式簽名的軟體雖然可以安裝到任何手機上執行,但它的能力有限,很多系統的功能用不了,比如我們常常需要的自啟動功能。如果我們想要我們的軟體能用到系統的功能,比如自啟動,訪問系統檔案,那我們就要向symbian申請證書了。這裡有兩種方式:

第一種方式是對於個人開發者,symbian發給我們乙個證書,該證書包含了開發者手機的imei碼,因此這種方式簽名的軟體只能安裝到該imei碼的手機上。我們現在自簽名的來電通,大字屏保等軟體,用的就是這種方式。第二種方式,就是對於商業軟體,開發商業軟體的組織把做好的軟體提交到symbian 測試中心進行測試,通過的話,由symbian進行簽名,然後該商業軟體就可以發行了。這種方式簽名的軟體,可以安裝到任何手機上,並且能夠訪問系統的關鍵api功能。

要得到symbian發給我們的證書,就比較麻煩了。這個證書就相當於我們的電子身份證了,我們要取得該身份證,就要向發證機關申請。要申請到,我們必須具備一些材料:我們的私鑰,組織名等等。在symbian s60第三版裡,最重要的乙個材料就是我們手機的imei碼,還有我們該證書的能力,比如經過該證書簽名的軟體可以自啟動,可以檢視系統檔案等。symbian有個工具可以收集我們的這些材料,這個工具就是我們申請個人證書時用的。它會產生乙個檔案***.csr裡面就包含了我們的這些材料了。symbian對這些資訊進行收集後,就發給我們乙個證書***.cer裡面包含證書的有效期(這個期限現在一般是半年,所以我們得到的這個證書只能使用半年,半年後又要重新申請),證書的演算法,存諸格式,imei碼,證書的簽名程式的能力(比如自啟動,訪問系統檔案,訪問網路等)。有了證書和私鑰,我們就可以對乙個新開發的軟體進進簽名了。

我們生成私鑰和公鑰後就可以對開發的軟體進行簽名了,命令如下

signsis ***_unsigned.sis ***_signed.sisx ***.cer ***.key

解釋:signsis 就是命令了,***_unsigned.sis是未簽名的檔名,這裡只是個檔名,並不代表這個軟體就真的未經過簽名,乙個簽過名的軟體可以再次簽名,這樣得出最後的結果是該軟體有兩個證書簽過名;***_signed.sisx表示簽過名後軟體的檔名;***.cer和***.key就是證書和私鑰了,如果私鑰是有密碼的,這裡要跟著寫上密碼,signsis.exe 用私鑰對軟體進行簽名,然後再把證書附加到軟體後面,最後輸出***_signed.sisx,這就是經過簽名的軟體病。

簽名的過程

簽名之後得到了可以安裝的軟體

這個過程其實就是用私鑰***.key進軟體進行簽名,然後附加證書***.cer到軟體裡。安裝軟體時,手機的安裝程式會檢測是不是該證書對應的私鑰簽名的,這樣就防止有人篡改軟體。不過由於該證書裡有個單一的imei碼。因此,它只能安裝到該imei碼的手機上。

S60 3rd版下,執行控制台程式

配置控制台 console 程式的執行環境 3rd mr版 編譯console程式,例子console程式路徑 c symbian 9.1 s60 3rd mr examples 配置執行環境 將epoc.exe改為eshell.exe 拷貝目標exe檔案到c 或z 下,以便執行。目標exe檔案的路...

k8s證書自簽筆記

獲取元件 wget wget wget 建立乙個名為tls的資料夾,並將元件檔案移動到該資料夾下,同時新增可習性許可權 建立tls資料夾 mkdir p tls 移動檔案 mv cfssl linux amd64 tls cfssl mv cfssljson linux amd64 tls cfss...

k8s部署 1 自簽TLS證書

元件 使用的證書 etcd ca.pem,server.pem,server key.pem kube apiserver ca.pem,server.pem,server key.pem kubelet ca.pem,ca key.pem kube proxy ca.pem,kube proxy....