由於 PLM 版本太舊,其中的 Java 程式憑證過期,使用者使用時會彈出警告視窗
所以需要設定企業白名單,而白名單需要進行數位簽章,所以還要有憑證架構
jdk1.8.0_202 Download
https://master.dl.sourceforge.net/project/msi-installers/msi-archive-files/Java/v8u31/jre-8u31-windows-i586.exe
先產生 ruleset.xml
所以需要設定企業白名單,而白名單需要進行數位簽章,所以還要有憑證架構
jdk1.8.0_202 Download
https://master.dl.sourceforge.net/project/msi-installers/msi-archive-files/Java/v8u31/jre-8u31-windows-i586.exe
先產生 ruleset.xml
<?xml version="1.0" encoding="UTF-8"?><ruleset version="1.0+"><rule><id location="https://plmap.contoso.com.tw/"/><action permission="run"/></rule><rule><id location="https://plmifs.contoso.com.tw:8080/"/><action permission="run"/></rule><rule><id/><action permission="default"/></rule></ruleset>
rem 用 Java Deployment Rule Set(企業白名單)的方式將 ruleset.xml 打包為 DeploymentRuleSet.jar 備用(檔名是硬規定)
rem 必須切換至 ruleset.xml 所在路徑執行,否則 DeploymentRuleSet.jar 中的 ruleset.xml 會有路徑,ruleset.xml 必須在 jar 的根
cd "C:\JDRS\"
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\jar.exe" ^
cf "DeploymentRuleSet.jar" ^
"ruleset.xml"
rem 檢查
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\jar.exe" ^
tf DeploymentRuleSet.jar
rem 先產生 keypair(含正確用途)
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\keytool.exe" ^
-genkeypair ^
-alias "Contoso JAR Code Signing" ^
-keyalg RSA ^
-keysize 2048 ^
-sigalg SHA256withRSA ^
-validity 3650 ^
-storetype PKCS12 ^
-keystore "C:\JDRS\Contoso JAR Code Signing.p12" ^
-storepass P@##w0rd ^
-keypass P@##w0rd ^
-dname "CN=Contoso JAR Code Signing, OU=IT, O=Contoso, L=Hsinchu, C=TW" ^
-ext KeyUsage=digitalSignature ^
-ext EKU=codeSigning
rem 確認 keystore 內容有正確 KeyUsage / EKU
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\keytool.exe" ^
-list -v ^
-storetype PKCS12 ^
-keystore "C:\JDRS\Contoso JAR Code Signing.p12" ^
-storepass P@##w0rd ^
-alias "Contoso JAR Code Signing"
rem 產生 CSR(給 CA 簽)
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\keytool.exe" ^
-certreq -alias "Contoso JAR Code Signing" ^
-keystore "C:\JDRS\Contoso JAR Code Signing.p12" ^
-storetype PKCS12 ^
-storepass P@##w0rd ^
-file "C:\JDRS\Contoso JAR Code Signing.csr" ^
-sigalg SHA256withRSA
rem 先匯入 CA 鏈 Root(順序很重要)(ContosoRootCA 自取名稱)
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\keytool.exe" ^
-importcert ^
-trustcacerts ^
-noprompt ^
-alias "ContosoRootCA" ^
-file "ContosoRootCA_ContosoRootCA 2025.crt" ^
-keystore "C:\JDRS\Contoso JAR Code Signing.p12" ^
-storetype PKCS12 ^
-storepass P@##w0rd
rem 再匯入 CA 鏈 Intermediate(順序很重要)(ContosoSubCA 自取名稱)
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\keytool.exe" ^
-importcert ^
-trustcacerts ^
-noprompt ^
-alias "ContosoSubCA" ^
-file "ContosoSubCA_ContosoSubCA 2025.crt" ^
-keystore "C:\JDRS\Contoso JAR Code Signing.p12" ^
-storetype PKCS12 ^
-storepass P@##w0rd
rem 確認目前 keystore 裡有哪些 alias
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\keytool.exe" ^
-list -v ^
-keystore "C:\JDRS\Contoso JAR Code Signing.p12" ^
-storetype PKCS12 ^
-storepass P@##w0rd
rem 確認簽發的 cer 是由哪個 CA 簽的
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\keytool.exe" ^
-printcert ^
-file "C:\JDRS\Contoso JAR Code Signing.cer"
rem 把 CA 簽發的 cer 匯入到「同一個 alias」
rem 這一步會把自簽那張替換成 CA 簽發的那張,並把 chain 串起來)
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\keytool.exe" ^
-importcert ^
-trustcacerts ^
-noprompt ^
-alias "Contoso JAR Code Signing" ^
-file "C:\JDRS\Contoso JAR Code Signing.cer" ^
-keystore "C:\JDRS\Contoso JAR Code Signing.p12" ^
-storetype PKCS12 ^
-storepass "P@##w0rd"
rem 確認目前 keystore
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\keytool.exe" ^
-list -v ^
-keystore "C:\JDRS\Contoso JAR Code Signing.p12" ^
-storetype PKCS12 ^
-storepass P@##w0rd ^
-alias "Contoso JAR Code Signing"
rem 用這個 P12 來簽 DeploymentRuleSet.jar (加 Timestamp)
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\jarsigner.exe" ^
-keystore "C:\JDRS\Contoso JAR Code Signing.p12" ^
-storetype PKCS12 ^
-storepass "P@##w0rd" ^
-tsa "http://timestamp.digicert.com" ^
"C:\JDRS\DeploymentRuleSet.jar" ^
"Contoso JAR Code Signing"
rem Timestamp過期: 給你一句可以拿去跟資安/稽核說的話
rem 「這個 JAR 使用可信任 TSA 加上時間戳。即使未來憑證或 TSA 憑證到期,Java 會依 timestamp 判定該程式是在憑證有效期間內簽署,因此不影響既有部署與執行。」
rem 驗證簽章(確保不會再有 PKIX/KeyUsage 警告)
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\jarsigner.exe" ^
-verify -verbose ^
-certs "C:\JDRS\DeploymentRuleSet.jar"
rem 再驗證簽章(看到 jar verified 就對了)
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\jarsigner.exe" ^
-verify -verbose ^
-certs "C:\JDRS\DeploymentRuleSet.jar"
rem 放到 Client 固定路徑(檔名/位置是硬規定)檔名必須是 DeploymentRuleSet.jar(大小寫也要一致)
copy "C:\JDRS\DeploymentRuleSet.jar" "C:\Windows\Sun\Java\Deployment\DeploymentRuleSet.jar"
rem 確認 JAR 內容結構
"C:\Program Files (x86)\Java\jdk1.8.0_202\bin\jar.exe" tf C:\Windows\Sun\Java\Deployment\DeploymentRuleSet.jar
沒有留言:
張貼留言