Signing the ClickOnce manifests
Visual Studio 2005 는 Signing 에 대해서 ClickOnce manifests 와 assemlies 에strong-name signing 을 UI 로 제공합니다.
Signing ClickOnce Manifests
ClickOnce 를 사용하여 배포할 때는 cryptographic x509 certificate 와 함께 signing 되어서 배포되어야 합니다. (RSA private key 암호화 기술을 사용합니다.)
'Select from Store' 라는 Button을 사용하여 사용자가 가지고 있는 certificate 를 지정할 수 있으며, Personal Information Exchange(.pfx) File을 사용하여 Signing 할 수 있습니다. (pfx file 을 사용할 경우 Password를 묻게 됩니다.)Certificate 는 다음의 조건을 만족해야 합니다.
- Private key 정보를 포함해야 합니다.
- RSA digital signature 를 사용하여 만들어져야 합니다.
- Code Signing 을 지원해야 합니다. 만일 EKU(Extended Key Usage) 또는 KU(Key Usage) 를 사용한다면, 명확하게 Code Signing 을 포함해야 합니다.
- 기간이 만료되지 말아야 합니다.
Application 유지 보수 중에 Certificate 관리 문제로 이와 관련한 문제를 접할 수 있으므로, Certificate Authority (CA) 를 따로 관리하거나, Certificate MMC snap-in tool (Certmgr.msc) 를 사용하여 관리하도록 합니다.
Test Certificates
Visual Studio 2005 를 사용하면 Test Certificate를 만들 수 있습니다. 이는 Test를 위한 목적으로 사용되어야 합니다. Test Certificate는 cryptographic key pair 정보를 가지고 있으나, publisher 에 대한 인증된 정보는 가지고 있지 않습니다. 따라서, ClickOnce 의 기능인 Trusted Application Deployment(TAD) 는 사용할 수 없습니다.
Obtaining a Signed Certificate
Test Certificate를 사용하지 않고, Signed Certificate를 사용하려면, Certificate Authorities(CAs) 를 구입해야 합니다. (Verisign, Inc.)
Timestamp Server URL
Timestamp Server URL 기능은 해당 Certificate 기간이 만료되었을 때, 관리하는 기능을 제공할 수 있습니다. Verisign, Inc. 는 이러한 Service를 제공하고 있습니다.
Trouble Shooting about this issue
ClickOnce Manifest file 에 Signing 한 Certificate 의 기간이 만료되면 Build 시 다음과 같은 오류가 발생하는 상황을 접할 수 있습니다. 새로운 Certificate으로 교체할 경우, 기존의 Client 에 배포한 Application은 모두 재 배포 하셔야 합니다. (즉, Uninstall 후 진행하셔야 합니다.) 하지만, 이는 현실적으로 불가능하기 때문에, 기존의 Certificate을 재 갱신하는 방법을 사용합니다. 이는 renewcert.exe Program을 사용하여 가능합니다. KB 925521 에 Source 가 나옵니다.
참고 : https://msdn2.microsoft.com/en-us/library/aa730868(VS.80).aspx
참고 : https://support.microsoft.com/kb/925521