View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0006344 | Compliance Test Tool (CTT) Unified Architecture | 1 - Script Issue | public | 2021-01-14 09:35 | 2021-03-25 14:25 |
Reporter | Uwe Stadelmann | Assigned To | Alexander Allmendinger | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.04.09.396 | ||||
Fixed in Version | 1.03.341.398 | ||||
Summary | 0006344: Not yet valid certificates: The start date is not in the future since 2021 | ||||
Description | Some test cases verify the correct usage of certificates which are not yet valid. These certificates are at least ctt_apTV and ctt_usrTV. The script create_ctt_pki.sh defines the start date to 1st of January 2021 which is now in the past. The same is valid for the windows version. | ||||
Tags | No tags attached. | ||||
Attached Files | |||||
Files Affected | |||||
has duplicate | 0006471 | closed | Alexander Allmendinger | Compliance Test Tool (CTT) Unified Architecture | ValidFrom in ctt_appTV.der not longer usable |
related to | 0006704 | assigned | Alexander Allmendinger | Certification | The CTT should report if certificate need to be regenerated |
|
In the script file creating the certificates fixed dates have been used for the "not yet valid" and "expired" certificates. Such fixed dates will expire at some point so the CMP group decided to use dates relative to the installation date in the future. This will be part of the next release but in case users need a workaround first, please used the attached files ... create_ctt_pki.bat (49,634 bytes)
@ECHO off REM %1 -> KEYSIZE REM %2 -> CURRENT_DIR REM %3 -> IS_PROJECT_DIR SETLOCAL ENABLEDELAYEDEXPANSION SET CURRENT_DIR=%~dp0 IF NOT "%2"=="" SET CURRENT_DIR=%2 SET STORE_PATH=%CURRENT_DIR%\TMPPKI SET DEPLOYED_SERVER_PKI_PATH=%CURRENT_DIR%ServerProjects\PKI IF "%3" == "true" SET DEPLOYED_SERVER_PKI_PATH=%CURRENT_DIR%\PKI SET DEPLOYED_SERVER_PKI_PATH=%CURRENT_DIR%ServerProjects\PKI IF "%3" == "true" SET DEPLOYED_SERVER_PKI_PATH=%CURRENT_DIR%\PKI SET DEPLOYED_CLIENT_PKI_PATH=%CURRENT_DIR%ClientProjects\PKI IF "%3" == "true" SET DEPLOYED_CLIENT_PKI_PATH=%CURRENT_DIR%\PKI SET DEPLOYED_SERVER_STORE_PATH=%DEPLOYED_SERVER_PKI_PATH%\CA SET DEPLOYED_CLIENT_STORE_PATH=%DEPLOYED_CLIENT_PKI_PATH%\CA SET HOSTNAME=%COMPUTERNAME% REM Initialize certificate subject fields SET KEYSIZE=2048 SET CERTSIGNATUREALG=sha256 IF NOT "%1"=="" SET KEYSIZE=%1 SET DEFAULTKEYSIZE=%KEYSIZE% SET CERTCN=UA\ Compliance\ Test\ Tool SET CERTO=OPC\ Foundation SET CERTL=Scottsdale SET CERTS=Arizona SET CERTC=US SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:OPCFoundation:UaComplianceTestTool SET CERT_VALIDITY_DAYS=365 SET CA_CERT_VALIDITY_DAYS=1825 REM Environment variable used by OpenSSL SET OPENSSL_CONF=openssl.cnf SET /a YEAR=%date:~12,2% SET /a MONTH=%date:~7,2% SET /a DAY=%date:~4,2% SET /a LASTYEAR=%YEAR%-1 SET /a NEXTYEAR=%YEAR%+1 REM These variables are referenced from the OpenSSL configuration file SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% SET G_STORE_PATH=%STORE_PATH% ECHO Initialize folder structures REM Temporary PKI store (working directory) IF NOT EXIST "%STORE_PATH%\certs" MKDIR "%STORE_PATH%\certs" IF NOT EXIST "%STORE_PATH%\crl" MKDIR "%STORE_PATH%\crl" IF NOT EXIST "%STORE_PATH%\private" MKDIR "%STORE_PATH%\private" IF NOT EXIST "%STORE_PATH%\request" MKDIR "%STORE_PATH%\request" REM ServerProject PKI store IF NOT EXIST "%DEPLOYED_SERVER_STORE_PATH%\certs" MKDIR "%DEPLOYED_SERVER_STORE_PATH%\certs" IF NOT EXIST "%DEPLOYED_SERVER_STORE_PATH%\crl" MKDIR "%DEPLOYED_SERVER_STORE_PATH%\crl" IF NOT EXIST "%DEPLOYED_SERVER_STORE_PATH%\private" MKDIR "%DEPLOYED_SERVER_STORE_PATH%\private" REM ClientProject PKI store IF NOT EXIST "%DEPLOYED_CLIENT_STORE_PATH%\certs" MKDIR "%DEPLOYED_CLIENT_STORE_PATH%\certs" IF NOT EXIST "%DEPLOYED_CLIENT_STORE_PATH%\crl" MKDIR "%DEPLOYED_CLIENT_STORE_PATH%\crl" IF NOT EXIST "%DEPLOYED_CLIENT_STORE_PATH%\private" MKDIR "%DEPLOYED_CLIENT_STORE_PATH%\private" REM ServerProject PKI copy_needed_files SET COPYTOSERVER_PATH=%DEPLOYED_SERVER_PKI_PATH%\copyToServer SET CS_AI_PKI=%COPYTOSERVER_PATH%\ApplicationInstance_PKI SET CS_USER_PKI=%COPYTOSERVER_PATH%\X509UserIdentity_PKI IF NOT EXIST "%COPYTOSERVER_PATH%" MKDIR "%COPYTOSERVER_PATH%" IF NOT EXIST "%CS_AI_PKI%" MKDIR "%CS_AI_PKI%" IF NOT EXIST "%CS_USER_PKI%" MKDIR "%CS_USER_PKI%" IF NOT EXIST "%CS_AI_PKI%\trusted" MKDIR "%CS_AI_PKI%\trusted" IF NOT EXIST "%CS_AI_PKI%\trusted\certs" MKDIR "%CS_AI_PKI%\trusted\certs" IF NOT EXIST "%CS_AI_PKI%\trusted\crl" MKDIR "%CS_AI_PKI%\trusted\crl" IF NOT EXIST "%CS_AI_PKI%\issuers" MKDIR "%CS_AI_PKI%\issuers" IF NOT EXIST "%CS_AI_PKI%\issuers\certs" MKDIR "%CS_AI_PKI%\issuers\certs" IF NOT EXIST "%CS_AI_PKI%\issuers\crl" MKDIR "%CS_AI_PKI%\issuers\crl" IF NOT EXIST "%CS_USER_PKI%\trusted" MKDIR "%CS_USER_PKI%\trusted" IF NOT EXIST "%CS_USER_PKI%\trusted\certs" MKDIR "%CS_USER_PKI%\trusted\certs" IF NOT EXIST "%CS_USER_PKI%\trusted\crl" MKDIR "%CS_USER_PKI%\trusted\crl" IF NOT EXIST "%CS_USER_PKI%\issuers" MKDIR "%CS_USER_PKI%\issuers" IF NOT EXIST "%CS_USER_PKI%\issuers\certs" MKDIR "%CS_USER_PKI%\issuers\certs" IF NOT EXIST "%CS_USER_PKI%\issuers\crl" MKDIR "%CS_USER_PKI%\issuers\crl" ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate ECHO ===================================== SET CERTCN=ctt_appT SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate (Sha1, 1024 Bit) ECHO ===================================== SET KEYSIZE=1024 SET CERTSIGNATUREALG=sha1 SET OPENSSL_CONF=openssl_sha1.cnf SET CERTCN=ctt_appTSha1_1024 SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR SET KEYSIZE=%DEFAULTKEYSIZE% SET CERTSIGNATUREALG=sha256 SET OPENSSL_CONF=openssl.cnf ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate (Sha1, 2048 Bit) ECHO ===================================== SET KEYSIZE=2048 SET CERTSIGNATUREALG=sha1 SET OPENSSL_CONF=openssl_sha1.cnf SET CERTCN=ctt_appTSha1_2048 SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR SET KEYSIZE=%DEFAULTKEYSIZE% SET CERTSIGNATUREALG=sha256 SET OPENSSL_CONF=openssl.cnf ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate (Sha256, 2048 Bit) ECHO ===================================== SET KEYSIZE=2048 SET CERTSIGNATUREALG=sha256 SET CERTCN=ctt_appTSha256_2048 SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR SET KEYSIZE=%DEFAULTKEYSIZE% SET CERTSIGNATUREALG=sha256 ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate (Sha256, 4096 Bit) ECHO ===================================== SET KEYSIZE=4096 SET CERTSIGNATUREALG=sha256 SET CERTCN=ctt_appTSha256_4096 SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR SET KEYSIZE=%DEFAULTKEYSIZE% SET CERTSIGNATUREALG=sha256 ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate - Not Trusted! ECHO ===================================== SET CERTCN=ctt_appU SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Not Yet Valid Application Instance Certificate ECHO ===================================== SET CERTCN=ctt_appTV SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate_validity "%CERTCN%" "%X509_SUBJ%" "%NEXTYEAR%0101120000Z" "%NEXTYEAR%0601120000Z" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Expired Application Instance Certificate - Trusted! ECHO ===================================== SET CERTCN=ctt_appTE SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate_validity "%CERTCN%" "%X509_SUBJ%" "%LASTYEAR%0101120000Z" "%LASTYEAR%0106120000Z" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Expired Application Instance Certificate - Not Trusted! ECHO ===================================== SET CERTCN=ctt_appUE SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate_validity "%CERTCN%" "%X509_SUBJ%" "%LASTYEAR%0101120000Z" "%LASTYEAR%1206120000Z" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Invalid IP Address ECHO ===================================== SET CERTCN=ctt_appTSip SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:noSuchHost:UA Compliance Test Tool CALL:create_self_signed_certificate "%CERTCN%" "/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=noSuchHost" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Incorrectly Signed ECHO ===================================== SET CERTCN=ctt_appTSincorrect SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:invalidate_certificate_signature "%CERTCN%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Incorrect App URI ECHO ===================================== SET CERTCN=ctt_appTSuri SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:ThisIsAnInvalidUri CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Create a trusted root Certificate Authority (CA) ECHO ===================================== SET CERTCN=ctt_ca1T SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_AI_PKI%\trusted\crl" || GOTO BATCH_END_ERROR CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_USER_PKI%\trusted\crl" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Create a trusted root Certificate Authority (CA) where the revocation list is not available ECHO ===================================== SET CERTCN=ctt_ca1TC SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" CALL:deploy_revocation_list "%CURRENTCA%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Create a unknown root Certificate Authority (CA) ECHO ===================================== SET CERTCN=ctt_ca1U SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" ECHO. ECHO. ECHO ===================================== ECHO = Create a issuers root Certificate Authority (CA) ECHO ===================================== SET CERTCN=ctt_ca1I SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "issuers" CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_AI_PKI%\issuers\crl" || GOTO BATCH_END_ERROR CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_USER_PKI%\issuers\crl" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Create a issuers root Certificate Authority (CA) where the revocation list is not known ECHO ===================================== SET CERTCN=ctt_ca1IC SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "issuers" REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a trusted secondary Certificate Authority (CA) from ctt_ca1T REM ECHO ===================================== REM SET CERTCN=ctt_ca1T_ca2T REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "trusted" ECHO. ECHO. ECHO ===================================== ECHO = Create a untrusted secondary Certificate Authority (CA) from ctt_ca1T ECHO ===================================== SET CERTCN=ctt_ca1T_ca2U SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a issuers secondary Certificate Authority (CA) from ctt_ca1T REM ECHO ===================================== REM SET CERTCN=ctt_ca1T_ca2I REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "issuers" ECHO. ECHO. ECHO ===================================== ECHO = Create a trusted secondary Certificate Authority (CA) from ctt_ca1I ECHO ===================================== SET CERTCN=ctt_ca1I_ca2T SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1I" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_AI_PKI%\trusted\crl" || GOTO BATCH_END_ERROR CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_USER_PKI%\trusted\crl" || GOTO BATCH_END_ERROR REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a issuers secondary Certificate Authority (CA) from ctt_ca1I REM ECHO ===================================== REM SET CERTCN=ctt_ca1I_ca2I REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1I" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "issuers" ECHO. ECHO. ECHO ===================================== ECHO = Create a issuers secondary Certificate Authority (CA) from ctt_ca1TC ECHO ===================================== SET CERTCN=ctt_ca1TC_ca2I SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1TC" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "issuers" CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_AI_PKI%\issuers\crl" || GOTO BATCH_END_ERROR CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_USER_PKI%\issuers\crl" || GOTO BATCH_END_ERROR REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a trusted thrid Certificate Authority (CA) from ctt_ca1T_ca2T REM ECHO ===================================== REM SET CERTCN=ctt_ca1T_ca2T_ca3T REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T_ca2T" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "trusted" REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a trusted thrid Certificate Authority (CA) from ctt_ca1T_ca2I REM ECHO ===================================== REM SET CERTCN=ctt_ca1T_ca2I_ca3T REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T_ca2I" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "trusted" ECHO Now we are starting to generate the user certificates ECHO. ECHO. ECHO ===================================== ECHO = Creating a USER Certificate for the CTT ECHO ===================================== SET CERTCN=ctt_usrT SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Creating a 2nd (not trusted) USER Certificate for the CTT ECHO ===================================== SET CERTCN=ctt_usrU SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Expired USER Certificate - Trusted! ECHO ===================================== SET CERTCN=ctt_usrTE SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate_validity "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%LASTYEAR%0101120000Z" "%LASTYEAR%1206120000Z" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Expired USER Certificate - Not Trusted! ECHO ===================================== SET CERTCN=ctt_usrUE SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate_validity "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%LASTYEAR%0101120000Z" "%LASTYEAR%1206120000Z" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Not Yet Valid USER Certificate ECHO ===================================== SET CERTCN=ctt_usrTV SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate_validity "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%NEXTYEAR%0101120000Z" "%NEXTYEAR%0601120000Z" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Incorrectly Signed USER certificate ECHO ===================================== SET CERTCN=ctt_usrTSincorrect SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:invalidate_certificate_signature "%CERTCN%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR GOTO BATCH_END_SUCCESS REM ================================================================ REM ====================== Helper functions ======================== REM ================================================================ :create_self_signed_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" IF exist "%G_CA_DATABASE_LOCATION%" del "%G_CA_DATABASE_LOCATION%"* IF exist "%G_CA_SERIAL_NUMBER_LOCATION%" del "%G_CA_SERIAL_NUMBER_LOCATION%"* IF exist "%G_CA_CRL_NUMBER_LOCATION%" del "%G_CA_CRL_NUMBER_LOCATION%"* REM Creating CA related files REM Generate an empty file ECHO. 2> "%G_CA_DATABASE_LOCATION%" ECHO 00 > "%G_CA_SERIAL_NUMBER_LOCATION%" ECHO 00 > "%G_CA_CRL_NUMBER_LOCATION%" REM Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR REM Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -%CERTSIGNATUREALG% -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -days %CERT_VALIDITY_DAYS% -selfsign -keyfile "%PRIVATE_KEY_LOCATION%" -in "%REQUEST_LOCATION%" -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" -extensions v3_self_signed || GOTO SUBR_OPENSSL_ERROR REM Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :create_self_signed_certificate_validity IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error IF %3.==. GOTO function_arguments_error IF %4.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET STARTDATE=%~3 SET ENDDATE=%~4 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" IF exist "%G_CA_DATABASE_LOCATION%" del "%G_CA_DATABASE_LOCATION%"* IF exist "%G_CA_SERIAL_NUMBER_LOCATION%" del "%G_CA_SERIAL_NUMBER_LOCATION%"* IF exist "%G_CA_CRL_NUMBER_LOCATION%" del "%G_CA_CRL_NUMBER_LOCATION%"* REM Creating CA related files REM Generate an empty file ECHO. 2> "%G_CA_DATABASE_LOCATION%" ECHO 00 > "%G_CA_SERIAL_NUMBER_LOCATION%" ECHO 00 > "%G_CA_CRL_NUMBER_LOCATION%" REM Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR REM Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -startdate %STARTDATE% -enddate %ENDDATE% -selfsign -keyfile "%PRIVATE_KEY_LOCATION%" -in "%REQUEST_LOCATION%" -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" -extensions v3_self_signed || GOTO SUBR_OPENSSL_ERROR REM Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :invalidate_certificate_signature IF %1.==. GOTO function_arguments_error SET NAME=%~1 SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der openssl enc -e -base64 -in "%CERTIFICATE_LOCATION%" -out "%CERTIFICATE_LOCATION%.b64" || GOTO SUBR_OPENSSL_ERROR CSCRIPT "fupfile.vbs" "%CERTIFICATE_LOCATION%.b64" || EXIT /B 1 openssl enc -d -base64 -in "%CERTIFICATE_LOCATION%.b64" -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :create_root_ca_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" IF exist "%G_CA_DATABASE_LOCATION%" del "%G_CA_DATABASE_LOCATION%"* IF exist "%G_CA_SERIAL_NUMBER_LOCATION%" del "%G_CA_SERIAL_NUMBER_LOCATION%"* IF exist "%G_CA_CRL_NUMBER_LOCATION%" del "%G_CA_CRL_NUMBER_LOCATION%"* REM Creating CA related files REM Generate an empty file ECHO. 2> "%G_CA_DATABASE_LOCATION%" ECHO 00 > "%G_CA_SERIAL_NUMBER_LOCATION%" ECHO 00 > "%G_CA_CRL_NUMBER_LOCATION%" REM Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR REM Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -days %CA_CERT_VALIDITY_DAYS% -selfsign -keyfile "%PRIVATE_KEY_LOCATION%" -in "%REQUEST_LOCATION%" -extensions v3_ca -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" || GOTO SUBR_OPENSSL_ERROR REM Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :create_issued_ca IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error IF %3.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET CA_NAME=%~3 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem SET CA_PEM_CERTIFICATE=%STORE_PATH%\certs\%CA_NAME%.pem SET CA_PRIVATE_KEY=%STORE_PATH%\private\%CA_NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" IF exist "%G_CA_DATABASE_LOCATION%" del "%G_CA_DATABASE_LOCATION%"* IF exist "%G_CA_SERIAL_NUMBER_LOCATION%" del "%G_CA_SERIAL_NUMBER_LOCATION%"* IF exist "%G_CA_CRL_NUMBER_LOCATION%" del "%G_CA_CRL_NUMBER_LOCATION%"* REM Creating CA related files REM Generate an empty file ECHO. 2> "%G_CA_DATABASE_LOCATION%" ECHO 00 > "%G_CA_SERIAL_NUMBER_LOCATION%" ECHO 00 > "%G_CA_CRL_NUMBER_LOCATION%" ECHO Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR ECHO Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR ECHO Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -days %CERT_VALIDITY_DAYS% -in "%REQUEST_LOCATION%" -extensions v3_ca -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" -keyfile "%CA_PRIVATE_KEY%" -cert "%CA_PEM_CERTIFICATE%" || GOTO SUBR_OPENSSL_ERROR ECHO Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :create_issued_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error IF %3.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET CA_NAME=%~3 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem SET CA_PEM_CERTIFICATE=%STORE_PATH%\certs\%CA_NAME%.pem SET CA_PRIVATE_KEY=%STORE_PATH%\private\%CA_NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%CA_NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%CA_NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%CA_NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" REM Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR REM Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -days %CERT_VALIDITY_DAYS% -in "%REQUEST_LOCATION%" -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" -keyfile "%CA_PRIVATE_KEY%" -cert "%CA_PEM_CERTIFICATE%" || GOTO SUBR_OPENSSL_ERROR REM Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :revoke_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET CA_NAME=%~2 SET DER_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET PEM_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem SET CA_CERTIFICATE=%STORE_PATH%\certs\%CA_NAME%.pem SET CA_PRIVATE_KEY=%STORE_PATH%\private\%CA_NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%CA_NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%CA_NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%CA_NAME%.txt REM Converting DER certificate to PEM format openssl x509 -inform DER -in "%DER_CERTIFICATE_LOCATION%" -outform PEM -out "%PEM_CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Revoking certificate openssl ca -config "%OPENSSL_CONF%" -revoke "%PEM_CERTIFICATE_LOCATION%" -cert "%CA_CERTIFICATE%" -keyfile "%CA_PRIVATE_KEY%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :update_revocation_list IF %1.==. GOTO function_arguments_error SET CA_NAME=%~1 SET REVOCATION_LIST_LOCATION=%STORE_PATH%\crl\%CA_NAME%.crl SET CA_CERTIFICATE=%STORE_PATH%\certs\%CA_NAME%.pem SET CA_PRIVATE_KEY=%STORE_PATH%\private\%CA_NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%CA_NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%CA_NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%CA_NAME%.txt REM Generate CRL openssl ca -config "%OPENSSL_CONF%" -gencrl -crldays 1825 -out "%REVOCATION_LIST_LOCATION%" -cert "%CA_CERTIFICATE%" -keyfile "%CA_PRIVATE_KEY%" || GOTO SUBR_OPENSSL_ERROR REM Convert CRL from PEM to DER format openssl crl -inform PEM -in "%REVOCATION_LIST_LOCATION%" -outform DER -out "%REVOCATION_LIST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :deploy_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET DEPLOYED_STORE_LOCATION=%~2 SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET TARGET_CERTIFICATE_LOCATION=%DEPLOYED_STORE_LOCATION%\certs\%NAME%.der SET TARGET_PRIVATE_KEY_LOCATION=%DEPLOYED_STORE_LOCATION%\private\%NAME%.pem COPY /Y "%CERTIFICATE_LOCATION%" "%TARGET_CERTIFICATE_LOCATION%" || GOTO SUBR_DEPLOY_FILE_ERROR COPY /Y "%PRIVATE_KEY_LOCATION%" "%TARGET_PRIVATE_KEY_LOCATION%" || GOTO SUBR_DEPLOY_FILE_ERROR GOTO:EOF REM ================================================================ :deploy_revocation_list IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET CA_NAME=%~1 SET DEPLOYED_STORE_LOCATION=%~2 SET REVOCATION_LIST_LOCATION=%STORE_PATH%\crl\%CA_NAME%.crl SET TARGET_REVOCATION_LIST_LOCATION=%DEPLOYED_STORE_LOCATION%\crl\%CA_NAME%.crl COPY /Y "%REVOCATION_LIST_LOCATION%" "%TARGET_REVOCATION_LIST_LOCATION%" || GOTO SUBR_DEPLOY_FILE_ERROR GOTO:EOF REM ================================================================ :copy_needed_files IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET DEPLOYED_STORE_LOCATION=%~2 SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME% SET TARGET_CERTIFICATE_LOCATION=%DEPLOYED_STORE_LOCATION%\%NAME% COPY /Y "%CERTIFICATE_LOCATION%" "%TARGET_CERTIFICATE_LOCATION%" || GOTO SUBR_DEPLOY_FILE_ERROR GOTO:EOF REM ================================================================ :create_all_issued_certificates IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET CATOISSUECERTIFICATESFROM=%~1 SET PATHTORI=%~2 ECHO Creating all issued certificates for %CATOISSUECERTIFICATESFROM% which is %PATHORI% ECHO. ECHO. ECHO ===================================== ECHO = Issue a trusted Certificate from %CATOISSUECERTIFICATESFROM% for the CTT ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_appT SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Issue a untrusted Certificate from %CATOISSUECERTIFICATESFROM% for the CTT ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_appU SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Revoke an issued Certificate from %CATOISSUECERTIFICATESFROM% for the trusted folder ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_appTR SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:revoke_certificate "%CERTCN%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:update_revocation_list "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_revocation_list "%CATOISSUECERTIFICATESFROM%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Revoke a second issued Certificate from %CATOISSUECERTIFICATESFROM% which is not trusted ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_appUR SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:revoke_certificate "%CERTCN%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:update_revocation_list "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_revocation_list "%CATOISSUECERTIFICATESFROM%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM Now lets issue the user certs for this ca SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org ECHO. ECHO. ECHO ===================================== ECHO = Issue a trusted User Certificate from %CATOISSUECERTIFICATESFROM% for the CTT ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_usrT SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Issue a untrusted User Certificate from %CATOISSUECERTIFICATESFROM% for the CTT ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_usrU SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Revoke an issued User Certificate from %CATOISSUECERTIFICATESFROM% for the trusted folder ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_usrTR SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:revoke_certificate "%CERTCN%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:update_revocation_list "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_revocation_list "%CATOISSUECERTIFICATESFROM%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Revoke a second issued Certificate from %CATOISSUECERTIFICATESFROM% which is not trusted ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_usrUR SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:revoke_certificate "%CERTCN%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:update_revocation_list "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM Reset the Subject alternative name SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% GOTO:EOF REM ================================================================ :function_arguments_error ECHO Invalid arguments when calling script function EXIT /B 1 :SUBR_OPENSSL_ERROR ECHO OpenSSL exited with an error EXIT /B 1 :SUBR_DEPLOY_FILE_ERROR ECHO Failed to deploy file EXIT /B 1 :BATCH_END_SUCCESS REM Delete temporary store location RMDIR "%STORE_PATH%" /S /Q ECHO. ECHO. ECHO ~~~ Certificates successfully created ~~~ ENDLOCAL EXIT /B 0 :BATCH_END_ERROR REM Delete PKI folder RMDIR "%STORE_PATH%" /S /Q RMDIR "%DEPLOYED_SERVER_PKI_PATH%" /S /Q RMDIR "%DEPLOYED_CLIENT_PKI_PATH%" /S /Q ECHO. ECHO. ECHO ~~~ Failed to create certificates ~~~ ENDLOCAL EXIT /B 1 |
|
Here is the updated Linux sh script which is being used ... create_ctt_pki.sh (43,085 bytes)
#!/bin/bash #handling calling arguments if [ "$#" -gt 0 ]; then echo "Arg0: DefaultKeySize=$1" KEYSIZE=$1 else KEYSIZE=2048 fi if [ "$#" -gt 1 ]; then echo "Arg1: CurrentDir=$2" CURRENT_DIR=$2 else #getting current directory where the script is called pushd `dirname $0` > /dev/null CURRENT_DIR="$PWD" popd > /dev/null fi if [ "$#" -gt 2 ]; then echo "Arg2: IsProjectDir=$3" ISPROJECTDIR=$3 fi if [ "$#" -gt 3 ]; then echo "Arg3: ApplicationDir=$4" APPLICATION_DIR=$4 else APPLICATION_DIR=$CURRENT_DIR fi echo "Working directory: $CURRENT_DIR" STORE_PATH=$CURRENT_DIR/TMPPKI if ! [ $ISPROJECTDIR -eq 1 ]; then DEPLOYED_SERVER_PKI_PATH=$CURRENT_DIR/../ServerProjects/PKI DEPLOYED_CLIENT_PKI_PATH=$CURRENT_DIR/../ClientProjects/PKI else DEPLOYED_SERVER_PKI_PATH=$CURRENT_DIR/PKI DEPLOYED_CLIENT_PKI_PATH=$CURRENT_DIR/PKI fi DEPLOYED_SERVER_STORE_PATH=$DEPLOYED_SERVER_PKI_PATH/CA DEPLOYED_CLIENT_STORE_PATH=$DEPLOYED_CLIENT_PKI_PATH/CA HOSTNAME=$(hostname) # Initialize certificate subject fields DEFAULTKEYSIZE=$KEYSIZE CERTCN="UA Compliance Test Tool" CERTO="OPC Foundation" CERTL="Scottsdale" CERTS="Arizona" CERTC="US" X509_SUBJ="/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" SUBJECT_ALTERNATIVE_NAME="URI:urn:$HOSTNAME:OPCFoundation:UaComplianceTestTool" CERT_VALIDITY_DAYS=365 CA_CERT_VALIDITY_DAYS=1825 export YEAR=$(date +"%y") export MONTH=$(date +"%m") export DAY=$(date +"%d") export LASTYEAR=$(($YEAR-1)) export NEXTYEAR=$(($YEAR+1)) #Environment variable used by OpenSSL OPENSSL_CONF=$APPLICATION_DIR/openssl.cnf # These variables are referenced from the OpenSSL configuration file export G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME export G_STORE_PATH=$STORE_PATH echo "Initialize folder structures" # Temporary PKI store (working directory) mkdir -p "$STORE_PATH/certs" || { echo "Failed to create folder"; exit 1; } mkdir -p "$STORE_PATH/crl" || { echo "Failed to create folder"; exit 1; } mkdir -p "$STORE_PATH/private" || { echo "Failed to create folder"; exit 1; } mkdir -p "$STORE_PATH/request" || { echo "Failed to create folder"; exit 1; } # ServerProject PKI store mkdir -p "$DEPLOYED_SERVER_STORE_PATH/certs" || { echo "Failed to create folder"; exit 1; } mkdir -p "$DEPLOYED_SERVER_STORE_PATH/crl" || { echo "Failed to create folder"; exit 1; } mkdir -p "$DEPLOYED_SERVER_STORE_PATH/private" || { echo "Failed to create folder"; exit 1; } # ClientProject PKI store mkdir -p "$DEPLOYED_CLIENT_STORE_PATH/certs" || { echo "Failed to create folder"; exit 1; } mkdir -p "$DEPLOYED_CLIENT_STORE_PATH/crl" || { echo "Failed to create folder"; exit 1; } mkdir -p "$DEPLOYED_CLIENT_STORE_PATH/private" || { echo "Failed to create folder"; exit 1; } # ServerProject PKI copy_needed_files export COPYTOSERVER_PATH=$DEPLOYED_SERVER_PKI_PATH/copyToServer export CS_AI_PKI=$COPYTOSERVER_PATH/ApplicationInstance_PKI export CS_USER_PKI=$COPYTOSERVER_PATH/X509UserIdentity_PKI mkdir -p "$COPYTOSERVER_PATH" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_AI_PKI" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_USER_PKI" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_AI_PKI/trusted" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_AI_PKI/trusted/certs" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_AI_PKI/trusted/crl" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_AI_PKI/issuers" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_AI_PKI/issuers/certs" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_AI_PKI/issuers/crl" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_USER_PKI/trusted" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_USER_PKI/trusted/certs" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_USER_PKI/trusted/crl" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_USER_PKI/issuers" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_USER_PKI/issuers/certs" || { echo "Failed to create folder"; exit 1; } mkdir -p "$CS_USER_PKI/issuers/crl" || { echo "Failed to create folder"; exit 1; } #Write .rnd file to avoid errors in terminal openssl rand -writerand $STORE_PATH/.rnd #================================================================ #====================== Helper functions ======================== #================================================================ process_end_success() { rm -rf "$STORE_PATH" echo "" echo "" echo "~~~ Certificates successfully created ~~~ " exit 0 } process_end_error() { rm -rf "$STORE_PATH" rm -rf "$DEPLOYED_SERVER_PKI_PATH" rm -rf "$DEPLOYED_CLIENT_PKI_PATH" echo "" echo "" echo "~~~ Failed to create certificates ~~~" exit 1 } create_self_signed_certificate() { if [ "$#" -ne 2 ]; then echo "Invalid arguments when calling script function (expected=2|received=$#)" return 1 fi NAME=$1 SUBJ=$2 PRIVATE_KEY_LOCATION=$STORE_PATH/private/$NAME.pem REQUEST_LOCATION=$STORE_PATH/request/$NAME.csr CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.der TEMP_CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.pem # These variables are referenced from the OpenSSL configuration file export G_CA_DATABASE_LOCATION=$STORE_PATH/database_$NAME.txt export G_CA_SERIAL_NUMBER_LOCATION=$STORE_PATH/serial_$NAME.txt export G_CA_CRL_NUMBER_LOCATION=$STORE_PATH/crlnumber_$NAME.txt # remove files to create when they already exist if [ -f "$PRIVATE_KEY_LOCATION" ]; then rm "$PRIVATE_KEY_LOCATION" ; fi if [ -f "$REQUEST_LOCATION" ]; then rm "$REQUEST_LOCATION" ; fi if [ -f "$CERTIFICATE_LOCATION" ]; then rm "$CERTIFICATE_LOCATION" ; fi if [ -f "$TEMP_CERTIFICATE_LOCATION" ]; then rm "$TEMP_CERTIFICATE_LOCATION" ; fi if [ -f "$G_CA_DATABASE_LOCATION" ]; then rm "$G_CA_DATABASE_LOCATION"* ; fi if [ -f "$G_CA_SERIAL_NUMBER_LOCATION" ]; then rm "$G_CA_SERIAL_NUMBER_LOCATION"* ; fi if [ -f "$G_CA_CRL_NUMBER_LOCATION" ]; then rm "$G_CA_CRL_NUMBER_LOCATION"* ; fi # Creating CA related files # Generate an empty file touch "$G_CA_DATABASE_LOCATION" echo 00 > "$G_CA_SERIAL_NUMBER_LOCATION" echo 00 > "$G_CA_CRL_NUMBER_LOCATION" # Creating private key openssl genrsa -out "$PRIVATE_KEY_LOCATION" $KEYSIZE || return 1 # Creating certificate request openssl req -config "$OPENSSL_CONF" -new -key "$PRIVATE_KEY_LOCATION" -outform PEM -out "$REQUEST_LOCATION" || return 1 # Creating self signed cert openssl ca -config "$OPENSSL_CONF" -batch -days $CERT_VALIDITY_DAYS -selfsign -keyfile "$PRIVATE_KEY_LOCATION" -in "$REQUEST_LOCATION" -out "$TEMP_CERTIFICATE_LOCATION" -subj "$SUBJ" -extensions v3_self_signed || return 1 # Converting PEM certificate to DER format openssl x509 -inform PEM -in "$TEMP_CERTIFICATE_LOCATION" -outform DER -out "$CERTIFICATE_LOCATION" || return 1 return 0 } create_self_signed_certificate_validity() { if [ "$#" -ne 4 ]; then echo "Invalid arguments when calling script function" return 1 fi NAME=$1 SUBJ=$2 STARTDATE=$3 ENDDATE=$4 PRIVATE_KEY_LOCATION=$STORE_PATH/private/$NAME.pem REQUEST_LOCATION=$STORE_PATH/request/$NAME.csr CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.der TEMP_CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.pem # These variables are referenced from the OpenSSL configuration file export G_CA_DATABASE_LOCATION=$STORE_PATH/database_$NAME.txt export G_CA_SERIAL_NUMBER_LOCATION=$STORE_PATH/serial_$NAME.txt export G_CA_CRL_NUMBER_LOCATION=$STORE_PATH/crlnumber_$NAME.txt # remove files to create when they already exist if [ -f "$PRIVATE_KEY_LOCATION" ]; then rm "$PRIVATE_KEY_LOCATION" ; fi if [ -f "$REQUEST_LOCATION" ]; then rm "$REQUEST_LOCATION" ; fi if [ -f "$CERTIFICATE_LOCATION" ]; then rm "$CERTIFICATE_LOCATION" ; fi if [ -f "$TEMP_CERTIFICATE_LOCATION" ]; then rm "$TEMP_CERTIFICATE_LOCATION" ; fi if [ -f "$G_CA_DATABASE_LOCATION" ]; then rm "$G_CA_DATABASE_LOCATION"* ; fi if [ -f "$G_CA_SERIAL_NUMBER_LOCATION" ]; then rm "$G_CA_SERIAL_NUMBER_LOCATION"* ; fi if [ -f "$G_CA_CRL_NUMBER_LOCATION" ]; then rm "$G_CA_CRL_NUMBER_LOCATION"* ; fi # Creating CA related files # Generate an empty file touch "$G_CA_DATABASE_LOCATION" echo 00 > "$G_CA_SERIAL_NUMBER_LOCATION" echo 00 > "$G_CA_CRL_NUMBER_LOCATION" # Creating private key openssl genrsa -out "$PRIVATE_KEY_LOCATION" $KEYSIZE || return 1 # Creating certificate request openssl req -config "$OPENSSL_CONF" -new -key "$PRIVATE_KEY_LOCATION" -outform PEM -out "$REQUEST_LOCATION" || return 1 # Creating self signed cert openssl ca -config "$OPENSSL_CONF" -batch -startdate $STARTDATE -enddate $ENDDATE -selfsign -keyfile "$PRIVATE_KEY_LOCATION" -in "$REQUEST_LOCATION" -out "$TEMP_CERTIFICATE_LOCATION" -subj "$SUBJ" -extensions v3_self_signed || return 1 # Converting PEM certificate to DER format openssl x509 -inform PEM -in "$TEMP_CERTIFICATE_LOCATION" -outform DER -out "$CERTIFICATE_LOCATION" || return 1 return 0 } invalidate_certificate_signature() { if [ "$#" -ne 1 ]; then echo "Invalid arguments when calling script function" return 1 fi NAME=$1 CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.der FILE_SIZE=`stat -c%s "$CERTIFICATE_LOCATION"` BYTECNT_PRE=`expr $FILE_SIZE - 51` TEMP_FILE=$STORE_PATH/certs/tempinvalidsign.der if [ -f "$TEMP_FILE" ]; then rm "$TEMP_FILE" ; fi head -c $BYTECNT_PRE "$CERTIFICATE_LOCATION" > $TEMP_FILE echo -n -e "\x3F" >> $TEMP_FILE tail -c 50 "$CERTIFICATE_LOCATION" >> $TEMP_FILE cp "$TEMP_FILE" "$CERTIFICATE_LOCATION" || return 1 rm "$TEMP_FILE" || return 1 return 0 } create_root_ca_certificate() { if [ "$#" -ne 2 ]; then echo "Invalid arguments when calling script function" return 1 fi NAME=$1 SUBJ=$2 PRIVATE_KEY_LOCATION=$STORE_PATH/private/$NAME.pem REQUEST_LOCATION=$STORE_PATH/request/$NAME.csr CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.der TEMP_CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.pem # These variables are referenced from the OpenSSL configuration file export G_CA_DATABASE_LOCATION=$STORE_PATH/database_$NAME.txt export G_CA_SERIAL_NUMBER_LOCATION=$STORE_PATH/serial_$NAME.txt export G_CA_CRL_NUMBER_LOCATION=$STORE_PATH/crlnumber_$NAME.txt # remove files to create when they already exist if [ -f "$PRIVATE_KEY_LOCATION" ]; then rm "$PRIVATE_KEY_LOCATION" ; fi if [ -f "$REQUEST_LOCATION" ]; then rm "$REQUEST_LOCATION" ; fi if [ -f "$CERTIFICATE_LOCATION" ]; then rm "$CERTIFICATE_LOCATION" ; fi if [ -f "$TEMP_CERTIFICATE_LOCATION" ]; then rm "$TEMP_CERTIFICATE_LOCATION" ; fi if [ -f "$G_CA_DATABASE_LOCATION" ]; then rm "$G_CA_DATABASE_LOCATION"* ; fi if [ -f "$G_CA_SERIAL_NUMBER_LOCATION" ]; then rm "$G_CA_SERIAL_NUMBER_LOCATION"* ; fi if [ -f "$G_CA_CRL_NUMBER_LOCATION" ]; then rm "$G_CA_CRL_NUMBER_LOCATION"* ; fi # Creating CA related files # Generate an empty file touch "$G_CA_DATABASE_LOCATION" echo 00 > "$G_CA_SERIAL_NUMBER_LOCATION" echo 00 > "$G_CA_CRL_NUMBER_LOCATION" # Creating private key openssl genrsa -out "$PRIVATE_KEY_LOCATION" $KEYSIZE || return 1 # Creating certificate request openssl req -config "$OPENSSL_CONF" -new -key "$PRIVATE_KEY_LOCATION" -outform PEM -out "$REQUEST_LOCATION" || return 1 # Creating self signed cert openssl ca -config "$OPENSSL_CONF" -batch -days $CA_CERT_VALIDITY_DAYS -selfsign -keyfile "$PRIVATE_KEY_LOCATION" -in "$REQUEST_LOCATION" -out "$TEMP_CERTIFICATE_LOCATION" -subj "$SUBJ" -extensions v3_ca || return 1 # Converting PEM certificate to DER format openssl x509 -inform PEM -in "$TEMP_CERTIFICATE_LOCATION" -outform DER -out "$CERTIFICATE_LOCATION" || return 1 return 0 } create_issued_ca() { if [ "$#" -ne 3 ]; then echo "Invalid arguments when calling script function" return 1 fi NAME=$1 SUBJ=$2 CA_NAME=$3 PRIVATE_KEY_LOCATION=$STORE_PATH/private/$NAME.pem REQUEST_LOCATION=$STORE_PATH/request/$NAME.csr CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.der TEMP_CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.pem CA_PEM_CERTIFICATE=$STORE_PATH/certs/$CA_NAME.pem CA_PRIVATE_KEY=$STORE_PATH/private/$CA_NAME.pem # These variables are referenced from the OpenSSL configuration file export G_CA_DATABASE_LOCATION=$STORE_PATH/database_$NAME.txt export G_CA_SERIAL_NUMBER_LOCATION=$STORE_PATH/serial_$NAME.txt export G_CA_CRL_NUMBER_LOCATION=$STORE_PATH/crlnumber_$NAME.txt # remove files to create when they already exist if [ -f "$PRIVATE_KEY_LOCATION" ]; then rm "$PRIVATE_KEY_LOCATION" ; fi if [ -f "$REQUEST_LOCATION" ]; then rm "$REQUEST_LOCATION" ; fi if [ -f "$CERTIFICATE_LOCATION" ]; then rm "$CERTIFICATE_LOCATION" ; fi if [ -f "$TEMP_CERTIFICATE_LOCATION" ]; then rm "$TEMP_CERTIFICATE_LOCATION" ; fi if [ -f "$G_CA_DATABASE_LOCATION" ]; then rm "$G_CA_DATABASE_LOCATION"* ; fi if [ -f "$G_CA_SERIAL_NUMBER_LOCATION" ]; then rm "$G_CA_SERIAL_NUMBER_LOCATION"* ; fi if [ -f "$G_CA_CRL_NUMBER_LOCATION" ]; then rm "$G_CA_CRL_NUMBER_LOCATION"* ; fi # Creating CA related files # Generate an empty file touch "$G_CA_DATABASE_LOCATION" echo 00 > "$G_CA_SERIAL_NUMBER_LOCATION" echo 00 > "$G_CA_CRL_NUMBER_LOCATION" # Creating private key openssl genrsa -out "$PRIVATE_KEY_LOCATION" $KEYSIZE || return 1 # Creating certificate request openssl req -config "$OPENSSL_CONF" -new -key "$PRIVATE_KEY_LOCATION" -outform PEM -out "$REQUEST_LOCATION" || return 1 # Creating self signed cert openssl ca -config "$OPENSSL_CONF" -batch -days $CA_CERT_VALIDITY_DAYS -in "$REQUEST_LOCATION" -extensions v3_ca -out "$TEMP_CERTIFICATE_LOCATION" -subj "$SUBJ" -keyfile "$CA_PRIVATE_KEY" -cert "$CA_PEM_CERTIFICATE" || return 1 # Converting PEM certificate to DER format openssl x509 -inform PEM -in "$TEMP_CERTIFICATE_LOCATION" -outform DER -out "$CERTIFICATE_LOCATION" || return 1 return 0 } copy_needed_files() { if [ "$#" -ne 2 ]; then echo "Invalid arguments when calling script function" return 1 fi export NAME=$1 export DEPLOYED_STORE_LOCATION=$2 export CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME export TARGET_CERTIFICATE_LOCATION=$DEPLOYED_STORE_LOCATION/ cp "$CERTIFICATE_LOCATION" "$TARGET_CERTIFICATE_LOCATION" || process_end_error } create_issued_certificate() { if [ "$#" -ne 3 ]; then echo "Invalid arguments when calling script function" return 1 fi NAME=$1 SUBJ=$2 CA_NAME=$3 PRIVATE_KEY_LOCATION=$STORE_PATH/private/$NAME.pem REQUEST_LOCATION=$STORE_PATH/request/$NAME.csr CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.der TEMP_CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.pem CA_PEM_CERTIFICATE=$STORE_PATH/certs/$CA_NAME.pem CA_PRIVATE_KEY=$STORE_PATH/private/$CA_NAME.pem # These variables are referenced from the OpenSSL configuration file export G_CA_DATABASE_LOCATION=$STORE_PATH/database_$CA_NAME.txt export G_CA_SERIAL_NUMBER_LOCATION=$STORE_PATH/serial_$CA_NAME.txt export G_CA_CRL_NUMBER_LOCATION=$STORE_PATH/crlnumber_$CA_NAME.txt # remove files to create when they already exist if [ -f "$PRIVATE_KEY_LOCATION" ]; then rm "$PRIVATE_KEY_LOCATION" ; fi if [ -f "$REQUEST_LOCATION" ]; then rm "$REQUEST_LOCATION" ; fi if [ -f "$CERTIFICATE_LOCATION" ]; then rm "$CERTIFICATE_LOCATION" ; fi if [ -f "$TEMP_CERTIFICATE_LOCATION" ]; then rm "$TEMP_CERTIFICATE_LOCATION" ; fi # Creating private key openssl genrsa -out "$PRIVATE_KEY_LOCATION" $KEYSIZE || return 1 # Creating certificate request openssl req -config "$OPENSSL_CONF" -new -key "$PRIVATE_KEY_LOCATION" -outform PEM -out "$REQUEST_LOCATION" || return 1 # Creating self signed cert openssl ca -config "$OPENSSL_CONF" -batch -days $CERT_VALIDITY_DAYS -keyfile "$CA_PRIVATE_KEY" -in "$REQUEST_LOCATION" -out "$TEMP_CERTIFICATE_LOCATION" -subj "$SUBJ" -cert "$CA_PEM_CERTIFICATE" || return 1 # Converting PEM certificate to DER format openssl x509 -inform PEM -in "$TEMP_CERTIFICATE_LOCATION" -outform DER -out "$CERTIFICATE_LOCATION" || return 1 return 0 } revoke_certificate() { if [ "$#" -ne 2 ]; then echo "Invalid arguments when calling script function" return 1 fi NAME=$1 CA_NAME=$2 DER_CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.der PEM_CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.pem CA_CERTIFICATE=$STORE_PATH/certs/$CA_NAME.pem CA_PRIVATE_KEY=$STORE_PATH/private/$CA_NAME.pem # These variables are referenced from the OpenSSL configuration file export G_CA_DATABASE_LOCATION=$STORE_PATH/database_$CA_NAME.txt export G_CA_SERIAL_NUMBER_LOCATION=$STORE_PATH/serial_$CA_NAME.txt export G_CA_CRL_NUMBER_LOCATION=$STORE_PATH/crlnumber_$CA_NAME.txt # Converting DER certificate to PEM format openssl x509 -inform DER -in "$DER_CERTIFICATE_LOCATION" -outform PEM -out "$PEM_CERTIFICATE_LOCATION" || return 1 # Revoking certificate openssl ca -config "$OPENSSL_CONF" -revoke "$PEM_CERTIFICATE_LOCATION" -cert "$CA_CERTIFICATE" -keyfile "$CA_PRIVATE_KEY" || return 1 return 0 } update_revocation_list() { if [ "$#" -ne 1 ]; then echo "Invalid arguments when calling script function" return 1 fi CA_NAME=$1 REVOCATION_LIST_LOCATION=$STORE_PATH/crl/$CA_NAME.crl CA_CERTIFICATE=$STORE_PATH/certs/$CA_NAME.pem CA_PRIVATE_KEY=$STORE_PATH/private/$CA_NAME.pem # These variables are referenced from the OpenSSL configuration file export G_CA_DATABASE_LOCATION=$STORE_PATH/database_$CA_NAME.txt export G_CA_SERIAL_NUMBER_LOCATION=$STORE_PATH/serial_$CA_NAME.txt export G_CA_CRL_NUMBER_LOCATION=$STORE_PATH/crlnumber_$CA_NAME.txt # Generate CRL openssl ca -config "$OPENSSL_CONF" -gencrl -crldays 1825 -out "$REVOCATION_LIST_LOCATION" -cert "$CA_CERTIFICATE" -keyfile "$CA_PRIVATE_KEY" || return 1 # Convert CRL from PEM to DER format openssl crl -inform PEM -in "$REVOCATION_LIST_LOCATION" -outform DER -out "$REVOCATION_LIST_LOCATION" || return 1 return 0 } deploy_certificate() { if [ "$#" -ne 2 ]; then echo "Invalid arguments when calling script function" return 1 fi NAME=$1 DEPLOYED_STORE_LOCATION=$2 CERTIFICATE_LOCATION=$STORE_PATH/certs/$NAME.der PRIVATE_KEY_LOCATION=$STORE_PATH/private/$NAME.pem TARGET_CERTIFICATE_LOCATION=$DEPLOYED_STORE_LOCATION/certs/$NAME.der TARGET_PRIVATE_KEY_LOCATION=$DEPLOYED_STORE_LOCATION/private/$NAME.pem cp "$CERTIFICATE_LOCATION" "$TARGET_CERTIFICATE_LOCATION" || { echo "Failed to copy certificate"; return 1; } cp "$PRIVATE_KEY_LOCATION" "$TARGET_PRIVATE_KEY_LOCATION" || { echo "Failed to copy private key"; return 1; } return 0 } deploy_revocation_list() { if [ "$#" -ne 2 ]; then echo "Invalid arguments when calling script function" return 1 fi CA_NAME=$1 DEPLOYED_STORE_LOCATION=$2 REVOCATION_LIST_LOCATION=$STORE_PATH/crl/$CA_NAME.crl TARGET_REVOCATION_LIST_LOCATION=$DEPLOYED_STORE_LOCATION/crl/$CA_NAME.crl cp "$REVOCATION_LIST_LOCATION" "$TARGET_REVOCATION_LIST_LOCATION" || return 1 return 0; } create_all_issued_certificates() { if [ "$#" -ne 2 ]; then echo "Invalid arguments when calling script function" return 1 fi CATOISSUECERTIFICATESFROM=$1 PATHTORI=$2 echo "Creating all issued certificates for $CATOISSUECERTIFICATESFROM which is $PATHORI" echo "" echo "" echo "=====================================" echo "= Issue a trusted Certificate from $CATOISSUECERTIFICATESFROM for the CTT" echo "=====================================" CERTCN=$CATOISSUECERTIFICATESFROM\_appT X509_SUBJ="/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_issued_certificate "$CERTCN" "$X509_SUBJ" "$CATOISSUECERTIFICATESFROM" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=====================================" echo "= Issue a untrusted Certificate from $CATOISSUECERTIFICATESFROM for the CTT" echo "=====================================" CERTCN=$CATOISSUECERTIFICATESFROM\_appU X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_issued_certificate "$CERTCN" "$X509_SUBJ" "$CATOISSUECERTIFICATESFROM" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error echo "" echo "" echo "=====================================" echo "= Revoke an issued Certificate from $CATOISSUECERTIFICATESFROM for the trusted folder" echo "=====================================" CERTCN=$CATOISSUECERTIFICATESFROM\_appTR X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_issued_certificate "$CERTCN" "$X509_SUBJ" "$CATOISSUECERTIFICATESFROM" || process_end_error revoke_certificate "$CERTCN" "$CATOISSUECERTIFICATESFROM" || process_end_error update_revocation_list "$CATOISSUECERTIFICATESFROM" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error deploy_revocation_list "$CATOISSUECERTIFICATESFROM" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=====================================" echo "= Revoke a second issued Certificate from $CATOISSUECERTIFICATESFROM which is not trusted" echo "=====================================" CERTCN=$CATOISSUECERTIFICATESFROM\_appUR X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_issued_certificate "$CERTCN" "$X509_SUBJ" "$CATOISSUECERTIFICATESFROM" || process_end_error revoke_certificate "$CERTCN" "$CATOISSUECERTIFICATESFROM" || process_end_error update_revocation_list "$CATOISSUECERTIFICATESFROM" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error deploy_revocation_list "$CATOISSUECERTIFICATESFROM" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error echo "Now lets issue the user certs for this ca" export G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org echo "" echo "" echo "=====================================" echo "= Issue a trusted User Certificate from $CATOISSUECERTIFICATESFROM for the CTT" echo "=====================================" CERTCN=$CATOISSUECERTIFICATESFROM\_usrT X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_issued_certificate "$CERTCN" "$X509_SUBJ" "$CATOISSUECERTIFICATESFROM" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=====================================" echo "= Issue a untrusted User Certificate from $CATOISSUECERTIFICATESFROM for the CTT" echo "=====================================" CERTCN=$CATOISSUECERTIFICATESFROM\_usrU X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_issued_certificate "$CERTCN" "$X509_SUBJ" "$CATOISSUECERTIFICATESFROM" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error echo "" echo "" echo "=====================================" echo "= Revoke an issued User Certificate from $CATOISSUECERTIFICATESFROM for the trusted folder" echo "=====================================" CERTCN=$CATOISSUECERTIFICATESFROM\_usrTR X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_issued_certificate "$CERTCN" "$X509_SUBJ" "$CATOISSUECERTIFICATESFROM" || process_end_error revoke_certificate "$CERTCN" "$CATOISSUECERTIFICATESFROM" || process_end_error update_revocation_list "$CATOISSUECERTIFICATESFROM" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error deploy_revocation_list "$CATOISSUECERTIFICATESFROM" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=====================================" echo "= Revoke a second issued Certificate from $CATOISSUECERTIFICATESFROM which is not trusted" echo "=====================================" CERTCN=$CATOISSUECERTIFICATESFROM\_usrUR X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_issued_certificate "$CERTCN" "$X509_SUBJ" "$CATOISSUECERTIFICATESFROM" || process_end_error revoke_certificate "$CERTCN" "$CATOISSUECERTIFICATESFROM" || process_end_error update_revocation_list "$CATOISSUECERTIFICATESFROM" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error export G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME } echo "" echo "" echo "======================================" echo "= CTT Application Instance Certificate" echo "======================================" CERTCN=ctt_appT X509_SUBJ="/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate "$CERTCN" "$X509_SUBJ" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_CLIENT_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=====================================" echo "= CTT Application Instance Certificate (Sha1, 1024 Bit)" echo "=====================================" KEYSIZE=1024 CERTSIGNATUREALG=sha1 OPENSSL_CONF=$APPLICATION_DIR/openssl_sha1.cnf CERTCN=ctt_appTSha1_1024 X509_SUBJ="/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate "$CERTCN" "$X509_SUBJ" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_CLIENT_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error export KEYSIZE=$DEFAULTKEYSIZE export CERTSIGNATUREALG=sha256 export OPENSSL_CONF=$APPLICATION_DIR/openssl.cnf echo "" echo "" echo "=====================================" echo "= CTT Application Instance Certificate (Sha1, 2048 Bit)" echo "=====================================" KEYSIZE=2048 CERTSIGNATUREALG=sha1 OPENSSL_CONF=$APPLICATION_DIR/openssl_sha1.cnf CERTCN=ctt_appTSha1_2048 X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate "$CERTCN" "$X509_SUBJ" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_CLIENT_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error KEYSIZE=$DEFAULTKEYSIZE CERTSIGNATUREALG=sha256 OPENSSL_CONF=$APPLICATION_DIR/openssl.cnf echo "" echo "" echo "=====================================" echo "= CTT Application Instance Certificate (Sha256, 2048 Bit)" echo "=====================================" KEYSIZE=2048 CERTSIGNATUREALG=sha256 CERTCN=ctt_appTSha256_2048 X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate "$CERTCN" "$X509_SUBJ" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_CLIENT_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error KEYSIZE=$DEFAULTKEYSIZE CERTSIGNATUREALG=sha256 echo "" echo "" echo "=====================================" echo "= CTT Application Instance Certificate (Sha256, 4096 Bit)" echo "=====================================" KEYSIZE=4096 CERTSIGNATUREALG=sha256 CERTCN=ctt_appTSha256_4096 X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate "$CERTCN" "$X509_SUBJ" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_CLIENT_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error KEYSIZE=$DEFAULTKEYSIZE CERTSIGNATUREALG=sha256 echo "" echo "" echo "=====================================================" echo "= CTT Application Instance Certificate - Not Trusted!" echo "=====================================================" CERTCN=ctt_appU X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate "$CERTCN" "$X509_SUBJ" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error echo "" echo "" echo "====================================================" echo "= CTT Not Yet Valid Application Instance Certificate" echo "====================================================" CERTCN=ctt_appTV X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate_validity "$CERTCN" "$X509_SUBJ" $NEXTYEAR"0101120000Z" $NEXTYEAR"0601120000Z" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=========================================================" echo "= CTT Expired Application Instance Certificate - Trusted!" echo "=========================================================" CERTCN=ctt_appTE X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate_validity "$CERTCN" "$X509_SUBJ" $LASTYEAR"0101120000Z" $LASTYEAR"1206120000Z" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=============================================================" echo "= CTT Expired Application Instance Certificate - Not Trusted!" echo "=============================================================" CERTCN=ctt_appUE X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate_validity "$CERTCN" "$X509_SUBJ" $LASTYEAR"0101120000Z" $LASTYEAR"1206120000Z" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error echo "" echo "" echo "=====================================" echo "= CTT Invalid IP Address" echo "=====================================" CERTCN=ctt_appTSip X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" G_SUBJECT_ALTERNATIVE_NAME="URI:urn:noSuchHost:UA Compliance Test Tool" create_self_signed_certificate "$CERTCN" "//C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=noSuchHost" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=====================================" echo "= CTT Incorrectly Signed" echo "=====================================" CERTCN=ctt_appTSincorrect X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" create_self_signed_certificate "$CERTCN" "$X509_SUBJ" || process_end_error invalidate_certificate_signature "$CERTCN" || process_end_error deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=====================================" echo "= CTT Invalid ApplicationURI" echo "=====================================" CERTCN=ctt_appTSuri X509_SUBJ="/C=$CERTC/L=$CERTL\ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" G_SUBJECT_ALTERNATIVE_NAME="URI:urn:ThisIsAnInvalidUri" create_self_signed_certificate "$CERTCN" "$X509_SUBJ" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=====================================" echo "= Create a Certificate Authority (CA)" echo "=====================================" CERTCN=ctt_ca1T CURRENTCA=$CERTCN X509_SUBJ=/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME G_SUBJECT_ALTERNATIVE_NAME="URI:urn:$HOSTNAME:$CERTCN" create_root_ca_certificate "$CERTCN" "$X509_SUBJ" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/trusted/certs" || process_end_error create_all_issued_certificates $CURRENTCA "trusted" copy_needed_files "../crl/$CURRENTCA.crl" "$CS_AI_PKI/trusted/crl" || process_end_error copy_needed_files "../crl/$CURRENTCA.crl" "$CS_USER_PKI/trusted/crl" || process_end_error echo "" echo "" echo "=====================================" echo "= Create a trusted root Certificate Authority (CA) where the revocation list is not available" echo "=====================================" CERTCN=ctt_ca1TC CURRENTCA=$CERTCN X509_SUBJ=/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME G_SUBJECT_ALTERNATIVE_NAME="URI:urn:$HOSTNAME:$CERTCN" create_root_ca_certificate "$CERTCN" "$X509_SUBJ" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/trusted/certs" || process_end_error create_all_issued_certificates $CURRENTCA "trusted" deploy_revocation_list "$CURRENTCA" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error echo "" echo "" echo "=====================================" echo "= Create a unknown root Certificate Authority (CA)" echo "=====================================" CERTCN=ctt_ca1U CURRENTCA=$CERTCN X509_SUBJ=/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME G_SUBJECT_ALTERNATIVE_NAME="URI:urn:$HOSTNAME:$CERTCN" create_root_ca_certificate "$CERTCN" "$X509_SUBJ" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error create_all_issued_certificates $CURRENTCA "trusted" echo "" echo "" echo "=====================================" echo "= Create a issuers root Certificate Authority (CA)" echo "=====================================" CERTCN=ctt_ca1I CURRENTCA=$CERTCN X509_SUBJ=/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME G_SUBJECT_ALTERNATIVE_NAME="URI:urn:$HOSTNAME:$CERTCN" create_root_ca_certificate "$CERTCN" "$X509_SUBJ" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/issuers/certs" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/issuers/certs" || process_end_error create_all_issued_certificates $CURRENTCA "issuers" deploy_revocation_list "$CURRENTCA" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "../crl/$CURRENTCA.crl" "$CS_AI_PKI/issuers/crl" || process_end_error copy_needed_files "../crl/$CURRENTCA.crl" "$CS_USER_PKI/issuers/crl" || process_end_error echo "" echo "" echo "=====================================" echo "= Create a issuers root Certificate Authority (CA) where the revocation list is not known" echo "=====================================" CERTCN=ctt_ca1IC CURRENTCA=$CERTCN X509_SUBJ=/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME G_SUBJECT_ALTERNATIVE_NAME="URI:urn:$HOSTNAME:$CERTCN" create_root_ca_certificate "$CERTCN" "$X509_SUBJ" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/issuers/certs" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/issuers/certs" || process_end_error create_all_issued_certificates $CURRENTCA "issuers" echo "" echo "" echo "=====================================" echo "= Create a untrusted secondary Certificate Authority (CA) from ctt_ca1T" echo "=====================================" CERTCN=ctt_ca1T_ca2U CURRENTCA=$CERTCN X509_SUBJ=/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME G_SUBJECT_ALTERNATIVE_NAME="URI:urn:$HOSTNAME:$CERTCN" create_issued_ca "$CERTCN" "$X509_SUBJ" "ctt_ca1T" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error create_all_issued_certificates $CURRENTCA "trusted" echo "" echo "" echo "=====================================" echo "= Create a trusted secondary Certificate Authority (CA) from ctt_ca1I" echo "=====================================" CERTCN=ctt_ca1I_ca2T CURRENTCA=$CERTCN X509_SUBJ=/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME G_SUBJECT_ALTERNATIVE_NAME="URI:urn:$HOSTNAME:$CERTCN" create_issued_ca "$CERTCN" "$X509_SUBJ" "ctt_ca1I" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/trusted/certs" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/trusted/certs" || process_end_error create_all_issued_certificates $CURRENTCA "trusted" copy_needed_files "../crl/$CURRENTCA.crl" "$CS_AI_PKI/trusted/crl" || process_end_error copy_needed_files "../crl/$CURRENTCA.crl" "$CS_USER_PKI/trusted/crl" || process_end_error echo "" echo "" echo "=====================================" echo "= Create a issuers secondary Certificate Authority (CA) from ctt_ca1TC" echo "=====================================" CERTCN=ctt_ca1TC_ca2I CURRENTCA=$CERTCN X509_SUBJ=/C=$CERTC/L=$CERTL/ST=$CERTS/O=$CERTO/CN=$CERTCN/DC=$HOSTNAME G_SUBJECT_ALTERNATIVE_NAME="URI:urn:$HOSTNAME:$CERTCN" create_issued_ca "$CERTCN" "$X509_SUBJ" "ctt_ca1TC" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_AI_PKI/issuers/certs" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/issuers/certs" || process_end_error create_all_issued_certificates $CURRENTCA "issuers" copy_needed_files "../crl/$CURRENTCA.crl" "$CS_AI_PKI/issuers/crl" || process_end_error copy_needed_files "../crl/$CURRENTCA.crl" "$CS_USER_PKI/issuers/crl" || process_end_error echo "Now we are starting to generate the user certificates" echo "" echo "" echo "==========================================" echo "= Creating a USER Certificate for the CTT" echo "==========================================" CERTCN=ctt_usrT G_SUBJECT_ALTERNATIVE_NAME="URI:compliance@opcfoundation.org" create_self_signed_certificate "$CERTCN" "//O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/trusted/certs" || process_end_error echo "" echo "" echo "==========================================================" echo "Creating a 2nd (not trusted) USER Certificate for the CTT" echo "==========================================================" CERTCN=ctt_usrU G_SUBJECT_ALTERNATIVE_NAME="URI:compliance@opcfoundation.org" create_self_signed_certificate "$CERTCN" "//O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error echo "" echo "" echo "=======================================" echo "CTT Expired User Certificate - Trusted!" echo "=======================================" CERTCN=ctt_usrTE G_SUBJECT_ALTERNATIVE_NAME="URI:compliance@opcfoundation.org" create_self_signed_certificate_validity "$CERTCN" "//O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" $LASTYEAR"0101120000Z" $LASTYEAR"1206120000Z" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=======================================" echo "CTT Expired User Certificate - Not Trusted!" echo "=======================================" CERTCN=ctt_usrUE G_SUBJECT_ALTERNATIVE_NAME="URI:compliance@opcfoundation.org" create_self_signed_certificate_validity "$CERTCN" "//O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" $LASTYEAR"0101120000Z" $LASTYEAR"1206120000Z" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error echo "" echo "" echo "=======================================" echo "CTT Not Yet Valid User Certificate!" echo "=======================================" CERTCN=ctt_usrTV G_SUBJECT_ALTERNATIVE_NAME="URI:compliance@opcfoundation.org" create_self_signed_certificate_validity "$CERTCN" "//O=$CERTO/CN=$CERTCN/DC=$HOSTNAME" $NEXTYEAR"0101120000Z" $NEXTYEAR"0601120000Z" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/trusted/certs" || process_end_error echo "" echo "" echo "=======================================" echo "CTT Incorrectly Signed USER certificate" echo "=======================================" CERTCN=ctt_usrTSincorrect G_SUBJECT_ALTERNATIVE_NAME="URI:compliance@opcfoundation.org" create_self_signed_certificate "$CERTCN" "$X509_SUBJ" || process_end_error invalidate_certificate_signature "$CERTCN" || process_end_error G_SUBJECT_ALTERNATIVE_NAME=$SUBJECT_ALTERNATIVE_NAME deploy_certificate "$CERTCN" "$DEPLOYED_SERVER_STORE_PATH" || process_end_error copy_needed_files "$CERTCN.der" "$CS_USER_PKI/trusted/certs" || process_end_error process_end_success |
|
Certificate creation bash scripts have been updated to calculate the "not yet valid" with CurrentYear + 1 and the "expired" certificates with CurrentYear - 1. This will ensure this does not happen again in the future. |
|
Proposed fixes are not working on windows systems with other locales than EN. |
|
New fix for windows systems which is supposed to work with any language and local Windows system. create_ctt_pki-2.bat (50,101 bytes)
@ECHO off REM %1 -> KEYSIZE REM %2 -> CURRENT_DIR REM %3 -> IS_PROJECT_DIR SETLOCAL ENABLEDELAYEDEXPANSION SET CURRENT_DIR=%~dp0 IF NOT "%2"=="" SET CURRENT_DIR=%2 SET STORE_PATH=%CURRENT_DIR%\TMPPKI SET DEPLOYED_SERVER_PKI_PATH=%CURRENT_DIR%ServerProjects\PKI IF "%3" == "true" SET DEPLOYED_SERVER_PKI_PATH=%CURRENT_DIR%\PKI SET DEPLOYED_SERVER_PKI_PATH=%CURRENT_DIR%ServerProjects\PKI IF "%3" == "true" SET DEPLOYED_SERVER_PKI_PATH=%CURRENT_DIR%\PKI SET DEPLOYED_CLIENT_PKI_PATH=%CURRENT_DIR%ClientProjects\PKI IF "%3" == "true" SET DEPLOYED_CLIENT_PKI_PATH=%CURRENT_DIR%\PKI SET DEPLOYED_SERVER_STORE_PATH=%DEPLOYED_SERVER_PKI_PATH%\CA SET DEPLOYED_CLIENT_STORE_PATH=%DEPLOYED_CLIENT_PKI_PATH%\CA SET HOSTNAME=%COMPUTERNAME% REM Initialize certificate subject fields SET KEYSIZE=2048 SET CERTSIGNATUREALG=sha256 IF NOT "%1"=="" SET KEYSIZE=%1 SET DEFAULTKEYSIZE=%KEYSIZE% SET CERTCN=UA\ Compliance\ Test\ Tool SET CERTO=OPC\ Foundation SET CERTL=Scottsdale SET CERTS=Arizona SET CERTC=US SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:OPCFoundation:UaComplianceTestTool SET CERT_VALIDITY_DAYS=365 SET CA_CERT_VALIDITY_DAYS=1825 REM Environment variable used by OpenSSL SET OPENSSL_CONF=openssl.cnf set X= for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x echo.%X% REM dissect into parts set DATE.YEAR=%X:~0,4% set DATE.MONTH=%X:~4,2% set DATE.DAY=%X:~6,2% set DATE.HOUR=%X:~8,2% set DATE.MINUTE=%X:~10,2% set DATE.SECOND=%X:~12,2% set DATE.FRACTIONS=%X:~15,6%s set DATE.OFFSET=%X:~21,4% echo Current DateTime is %DATE.YEAR%-%DATE.MONTH%-%DATE.DAY% %DATE.HOUR%:%DATE.MINUTE%:%DATE.SECOND%.%DATE.FRACTIONS% SET /a YEAR=%DATE.YEAR% SET /a MONTH=%DATE.MONTH% SET /a DAY=%DATE.DAY% SET /a LASTYEAR=%YEAR%-1 SET /a NEXTYEAR=%YEAR%+1 REM These variables are referenced from the OpenSSL configuration file SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% SET G_STORE_PATH=%STORE_PATH% ECHO Initialize folder structures REM Temporary PKI store (working directory) IF NOT EXIST "%STORE_PATH%\certs" MKDIR "%STORE_PATH%\certs" IF NOT EXIST "%STORE_PATH%\crl" MKDIR "%STORE_PATH%\crl" IF NOT EXIST "%STORE_PATH%\private" MKDIR "%STORE_PATH%\private" IF NOT EXIST "%STORE_PATH%\request" MKDIR "%STORE_PATH%\request" REM ServerProject PKI store IF NOT EXIST "%DEPLOYED_SERVER_STORE_PATH%\certs" MKDIR "%DEPLOYED_SERVER_STORE_PATH%\certs" IF NOT EXIST "%DEPLOYED_SERVER_STORE_PATH%\crl" MKDIR "%DEPLOYED_SERVER_STORE_PATH%\crl" IF NOT EXIST "%DEPLOYED_SERVER_STORE_PATH%\private" MKDIR "%DEPLOYED_SERVER_STORE_PATH%\private" REM ClientProject PKI store IF NOT EXIST "%DEPLOYED_CLIENT_STORE_PATH%\certs" MKDIR "%DEPLOYED_CLIENT_STORE_PATH%\certs" IF NOT EXIST "%DEPLOYED_CLIENT_STORE_PATH%\crl" MKDIR "%DEPLOYED_CLIENT_STORE_PATH%\crl" IF NOT EXIST "%DEPLOYED_CLIENT_STORE_PATH%\private" MKDIR "%DEPLOYED_CLIENT_STORE_PATH%\private" REM ServerProject PKI copy_needed_files SET COPYTOSERVER_PATH=%DEPLOYED_SERVER_PKI_PATH%\copyToServer SET CS_AI_PKI=%COPYTOSERVER_PATH%\ApplicationInstance_PKI SET CS_USER_PKI=%COPYTOSERVER_PATH%\X509UserIdentity_PKI IF NOT EXIST "%COPYTOSERVER_PATH%" MKDIR "%COPYTOSERVER_PATH%" IF NOT EXIST "%CS_AI_PKI%" MKDIR "%CS_AI_PKI%" IF NOT EXIST "%CS_USER_PKI%" MKDIR "%CS_USER_PKI%" IF NOT EXIST "%CS_AI_PKI%\trusted" MKDIR "%CS_AI_PKI%\trusted" IF NOT EXIST "%CS_AI_PKI%\trusted\certs" MKDIR "%CS_AI_PKI%\trusted\certs" IF NOT EXIST "%CS_AI_PKI%\trusted\crl" MKDIR "%CS_AI_PKI%\trusted\crl" IF NOT EXIST "%CS_AI_PKI%\issuers" MKDIR "%CS_AI_PKI%\issuers" IF NOT EXIST "%CS_AI_PKI%\issuers\certs" MKDIR "%CS_AI_PKI%\issuers\certs" IF NOT EXIST "%CS_AI_PKI%\issuers\crl" MKDIR "%CS_AI_PKI%\issuers\crl" IF NOT EXIST "%CS_USER_PKI%\trusted" MKDIR "%CS_USER_PKI%\trusted" IF NOT EXIST "%CS_USER_PKI%\trusted\certs" MKDIR "%CS_USER_PKI%\trusted\certs" IF NOT EXIST "%CS_USER_PKI%\trusted\crl" MKDIR "%CS_USER_PKI%\trusted\crl" IF NOT EXIST "%CS_USER_PKI%\issuers" MKDIR "%CS_USER_PKI%\issuers" IF NOT EXIST "%CS_USER_PKI%\issuers\certs" MKDIR "%CS_USER_PKI%\issuers\certs" IF NOT EXIST "%CS_USER_PKI%\issuers\crl" MKDIR "%CS_USER_PKI%\issuers\crl" ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate ECHO ===================================== SET CERTCN=ctt_appT SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate (Sha1, 1024 Bit) ECHO ===================================== SET KEYSIZE=1024 SET CERTSIGNATUREALG=sha1 SET OPENSSL_CONF=openssl_sha1.cnf SET CERTCN=ctt_appTSha1_1024 SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR SET KEYSIZE=%DEFAULTKEYSIZE% SET CERTSIGNATUREALG=sha256 SET OPENSSL_CONF=openssl.cnf ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate (Sha1, 2048 Bit) ECHO ===================================== SET KEYSIZE=2048 SET CERTSIGNATUREALG=sha1 SET OPENSSL_CONF=openssl_sha1.cnf SET CERTCN=ctt_appTSha1_2048 SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR SET KEYSIZE=%DEFAULTKEYSIZE% SET CERTSIGNATUREALG=sha256 SET OPENSSL_CONF=openssl.cnf ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate (Sha256, 2048 Bit) ECHO ===================================== SET KEYSIZE=2048 SET CERTSIGNATUREALG=sha256 SET CERTCN=ctt_appTSha256_2048 SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR SET KEYSIZE=%DEFAULTKEYSIZE% SET CERTSIGNATUREALG=sha256 ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate (Sha256, 4096 Bit) ECHO ===================================== SET KEYSIZE=4096 SET CERTSIGNATUREALG=sha256 SET CERTCN=ctt_appTSha256_4096 SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_CLIENT_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR SET KEYSIZE=%DEFAULTKEYSIZE% SET CERTSIGNATUREALG=sha256 ECHO. ECHO. ECHO ===================================== ECHO = CTT Application Instance Certificate - Not Trusted! ECHO ===================================== SET CERTCN=ctt_appU SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Not Yet Valid Application Instance Certificate ECHO ===================================== SET CERTCN=ctt_appTV SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate_validity "%CERTCN%" "%X509_SUBJ%" "%NEXTYEAR%0101120000Z" "%NEXTYEAR%0601120000Z" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Expired Application Instance Certificate - Trusted! ECHO ===================================== SET CERTCN=ctt_appTE SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate_validity "%CERTCN%" "%X509_SUBJ%" "%LASTYEAR%0101120000Z" "%LASTYEAR%0106120000Z" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Expired Application Instance Certificate - Not Trusted! ECHO ===================================== SET CERTCN=ctt_appUE SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate_validity "%CERTCN%" "%X509_SUBJ%" "%LASTYEAR%0101120000Z" "%LASTYEAR%1206120000Z" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Invalid IP Address ECHO ===================================== SET CERTCN=ctt_appTSip SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:noSuchHost:UA Compliance Test Tool CALL:create_self_signed_certificate "%CERTCN%" "/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=noSuchHost" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Incorrectly Signed ECHO ===================================== SET CERTCN=ctt_appTSincorrect SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:invalidate_certificate_signature "%CERTCN%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Incorrect App URI ECHO ===================================== SET CERTCN=ctt_appTSuri SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:ThisIsAnInvalidUri CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Create a trusted root Certificate Authority (CA) ECHO ===================================== SET CERTCN=ctt_ca1T SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_AI_PKI%\trusted\crl" || GOTO BATCH_END_ERROR CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_USER_PKI%\trusted\crl" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Create a trusted root Certificate Authority (CA) where the revocation list is not available ECHO ===================================== SET CERTCN=ctt_ca1TC SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" CALL:deploy_revocation_list "%CURRENTCA%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Create a unknown root Certificate Authority (CA) ECHO ===================================== SET CERTCN=ctt_ca1U SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" ECHO. ECHO. ECHO ===================================== ECHO = Create a issuers root Certificate Authority (CA) ECHO ===================================== SET CERTCN=ctt_ca1I SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "issuers" CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_AI_PKI%\issuers\crl" || GOTO BATCH_END_ERROR CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_USER_PKI%\issuers\crl" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Create a issuers root Certificate Authority (CA) where the revocation list is not known ECHO ===================================== SET CERTCN=ctt_ca1IC SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_root_ca_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "issuers" REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a trusted secondary Certificate Authority (CA) from ctt_ca1T REM ECHO ===================================== REM SET CERTCN=ctt_ca1T_ca2T REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "trusted" ECHO. ECHO. ECHO ===================================== ECHO = Create a untrusted secondary Certificate Authority (CA) from ctt_ca1T ECHO ===================================== SET CERTCN=ctt_ca1T_ca2U SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a issuers secondary Certificate Authority (CA) from ctt_ca1T REM ECHO ===================================== REM SET CERTCN=ctt_ca1T_ca2I REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "issuers" ECHO. ECHO. ECHO ===================================== ECHO = Create a trusted secondary Certificate Authority (CA) from ctt_ca1I ECHO ===================================== SET CERTCN=ctt_ca1I_ca2T SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1I" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "trusted" CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_AI_PKI%\trusted\crl" || GOTO BATCH_END_ERROR CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_USER_PKI%\trusted\crl" || GOTO BATCH_END_ERROR REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a issuers secondary Certificate Authority (CA) from ctt_ca1I REM ECHO ===================================== REM SET CERTCN=ctt_ca1I_ca2I REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1I" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "issuers" ECHO. ECHO. ECHO ===================================== ECHO = Create a issuers secondary Certificate Authority (CA) from ctt_ca1TC ECHO ===================================== SET CERTCN=ctt_ca1TC_ca2I SET CURRENTCA=%CERTCN% SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1TC" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\issuers\certs" || GOTO BATCH_END_ERROR CALL:create_all_issued_certificates %CURRENTCA% "issuers" CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_AI_PKI%\issuers\crl" || GOTO BATCH_END_ERROR CALL:copy_needed_files "..\crl\%CURRENTCA%.crl" "%CS_USER_PKI%\issuers\crl" || GOTO BATCH_END_ERROR REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a trusted thrid Certificate Authority (CA) from ctt_ca1T_ca2T REM ECHO ===================================== REM SET CERTCN=ctt_ca1T_ca2T_ca3T REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T_ca2T" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "trusted" REM ECHO. REM ECHO. REM ECHO ===================================== REM ECHO = Create a trusted thrid Certificate Authority (CA) from ctt_ca1T_ca2I REM ECHO ===================================== REM SET CERTCN=ctt_ca1T_ca2I_ca3T REM SET CURRENTCA=%CERTCN% REM SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% REM SET G_SUBJECT_ALTERNATIVE_NAME=URI:urn:%HOSTNAME%:%CERTCN% REM CALL:create_issued_ca "%CERTCN%" "%X509_SUBJ%" "ctt_ca1T_ca2I" || GOTO BATCH_END_ERROR REM SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% REM CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR REM CALL:create_all_issued_certificates %CURRENTCA% "trusted" ECHO Now we are starting to generate the user certificates ECHO. ECHO. ECHO ===================================== ECHO = Creating a USER Certificate for the CTT ECHO ===================================== SET CERTCN=ctt_usrT SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Creating a 2nd (not trusted) USER Certificate for the CTT ECHO ===================================== SET CERTCN=ctt_usrU SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Expired USER Certificate - Trusted! ECHO ===================================== SET CERTCN=ctt_usrTE SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate_validity "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%LASTYEAR%0101120000Z" "%LASTYEAR%1206120000Z" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Expired USER Certificate - Not Trusted! ECHO ===================================== SET CERTCN=ctt_usrUE SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_self_signed_certificate_validity "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%LASTYEAR%0101120000Z" "%LASTYEAR%1206120000Z" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Not Yet Valid USER Certificate ECHO ===================================== SET CERTCN=ctt_usrTV SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate_validity "%CERTCN%" "/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%NEXTYEAR%0101120000Z" "%NEXTYEAR%0601120000Z" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = CTT Incorrectly Signed USER certificate ECHO ===================================== SET CERTCN=ctt_usrTSincorrect SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org CALL:create_self_signed_certificate "%CERTCN%" "%X509_SUBJ%" || GOTO BATCH_END_ERROR CALL:invalidate_certificate_signature "%CERTCN%" || GOTO BATCH_END_ERROR SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR GOTO BATCH_END_SUCCESS REM ================================================================ REM ====================== Helper functions ======================== REM ================================================================ :create_self_signed_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" IF exist "%G_CA_DATABASE_LOCATION%" del "%G_CA_DATABASE_LOCATION%"* IF exist "%G_CA_SERIAL_NUMBER_LOCATION%" del "%G_CA_SERIAL_NUMBER_LOCATION%"* IF exist "%G_CA_CRL_NUMBER_LOCATION%" del "%G_CA_CRL_NUMBER_LOCATION%"* REM Creating CA related files REM Generate an empty file ECHO. 2> "%G_CA_DATABASE_LOCATION%" ECHO 00 > "%G_CA_SERIAL_NUMBER_LOCATION%" ECHO 00 > "%G_CA_CRL_NUMBER_LOCATION%" REM Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR REM Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -%CERTSIGNATUREALG% -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -days %CERT_VALIDITY_DAYS% -selfsign -keyfile "%PRIVATE_KEY_LOCATION%" -in "%REQUEST_LOCATION%" -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" -extensions v3_self_signed || GOTO SUBR_OPENSSL_ERROR REM Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :create_self_signed_certificate_validity IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error IF %3.==. GOTO function_arguments_error IF %4.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET STARTDATE=%~3 SET ENDDATE=%~4 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" IF exist "%G_CA_DATABASE_LOCATION%" del "%G_CA_DATABASE_LOCATION%"* IF exist "%G_CA_SERIAL_NUMBER_LOCATION%" del "%G_CA_SERIAL_NUMBER_LOCATION%"* IF exist "%G_CA_CRL_NUMBER_LOCATION%" del "%G_CA_CRL_NUMBER_LOCATION%"* REM Creating CA related files REM Generate an empty file ECHO. 2> "%G_CA_DATABASE_LOCATION%" ECHO 00 > "%G_CA_SERIAL_NUMBER_LOCATION%" ECHO 00 > "%G_CA_CRL_NUMBER_LOCATION%" REM Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR REM Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -startdate %STARTDATE% -enddate %ENDDATE% -selfsign -keyfile "%PRIVATE_KEY_LOCATION%" -in "%REQUEST_LOCATION%" -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" -extensions v3_self_signed || GOTO SUBR_OPENSSL_ERROR REM Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :invalidate_certificate_signature IF %1.==. GOTO function_arguments_error SET NAME=%~1 SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der openssl enc -e -base64 -in "%CERTIFICATE_LOCATION%" -out "%CERTIFICATE_LOCATION%.b64" || GOTO SUBR_OPENSSL_ERROR CSCRIPT "fupfile.vbs" "%CERTIFICATE_LOCATION%.b64" || EXIT /B 1 openssl enc -d -base64 -in "%CERTIFICATE_LOCATION%.b64" -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :create_root_ca_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" IF exist "%G_CA_DATABASE_LOCATION%" del "%G_CA_DATABASE_LOCATION%"* IF exist "%G_CA_SERIAL_NUMBER_LOCATION%" del "%G_CA_SERIAL_NUMBER_LOCATION%"* IF exist "%G_CA_CRL_NUMBER_LOCATION%" del "%G_CA_CRL_NUMBER_LOCATION%"* REM Creating CA related files REM Generate an empty file ECHO. 2> "%G_CA_DATABASE_LOCATION%" ECHO 00 > "%G_CA_SERIAL_NUMBER_LOCATION%" ECHO 00 > "%G_CA_CRL_NUMBER_LOCATION%" REM Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR REM Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -days %CA_CERT_VALIDITY_DAYS% -selfsign -keyfile "%PRIVATE_KEY_LOCATION%" -in "%REQUEST_LOCATION%" -extensions v3_ca -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" || GOTO SUBR_OPENSSL_ERROR REM Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :create_issued_ca IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error IF %3.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET CA_NAME=%~3 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem SET CA_PEM_CERTIFICATE=%STORE_PATH%\certs\%CA_NAME%.pem SET CA_PRIVATE_KEY=%STORE_PATH%\private\%CA_NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" IF exist "%G_CA_DATABASE_LOCATION%" del "%G_CA_DATABASE_LOCATION%"* IF exist "%G_CA_SERIAL_NUMBER_LOCATION%" del "%G_CA_SERIAL_NUMBER_LOCATION%"* IF exist "%G_CA_CRL_NUMBER_LOCATION%" del "%G_CA_CRL_NUMBER_LOCATION%"* REM Creating CA related files REM Generate an empty file ECHO. 2> "%G_CA_DATABASE_LOCATION%" ECHO 00 > "%G_CA_SERIAL_NUMBER_LOCATION%" ECHO 00 > "%G_CA_CRL_NUMBER_LOCATION%" ECHO Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR ECHO Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR ECHO Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -days %CERT_VALIDITY_DAYS% -in "%REQUEST_LOCATION%" -extensions v3_ca -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" -keyfile "%CA_PRIVATE_KEY%" -cert "%CA_PEM_CERTIFICATE%" || GOTO SUBR_OPENSSL_ERROR ECHO Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :create_issued_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error IF %3.==. GOTO function_arguments_error SET NAME=%~1 SET SUBJ=%~2 SET CA_NAME=%~3 SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET REQUEST_LOCATION=%STORE_PATH%\request\%NAME%.csr SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET TEMP_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem SET CA_PEM_CERTIFICATE=%STORE_PATH%\certs\%CA_NAME%.pem SET CA_PRIVATE_KEY=%STORE_PATH%\private\%CA_NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%CA_NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%CA_NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%CA_NAME%.txt REM remove files to create when they already exist IF exist "%PRIVATE_KEY_LOCATION%" del "%PRIVATE_KEY_LOCATION%" IF exist "%REQUEST_LOCATION%" del "%REQUEST_LOCATION%" IF exist "%CERTIFICATE_LOCATION%" del "%CERTIFICATE_LOCATION%" IF exist "%TEMP_CERTIFICATE_LOCATION%" del "%TEMP_CERTIFICATE_LOCATION%" REM Creating private key openssl genrsa -out "%PRIVATE_KEY_LOCATION%" %KEYSIZE% || GOTO SUBR_OPENSSL_ERROR REM Creating certificate request openssl req -config "%OPENSSL_CONF%" -new -key "%PRIVATE_KEY_LOCATION%" -outform PEM -out "%REQUEST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Creating self signed cert openssl ca -config "%OPENSSL_CONF%" -batch -days %CERT_VALIDITY_DAYS% -in "%REQUEST_LOCATION%" -out "%TEMP_CERTIFICATE_LOCATION%" -subj "%SUBJ%" -keyfile "%CA_PRIVATE_KEY%" -cert "%CA_PEM_CERTIFICATE%" || GOTO SUBR_OPENSSL_ERROR REM Converting PEM certificate to DER format openssl x509 -inform PEM -in "%TEMP_CERTIFICATE_LOCATION%" -outform DER -out "%CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :revoke_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET CA_NAME=%~2 SET DER_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET PEM_CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.pem SET CA_CERTIFICATE=%STORE_PATH%\certs\%CA_NAME%.pem SET CA_PRIVATE_KEY=%STORE_PATH%\private\%CA_NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%CA_NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%CA_NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%CA_NAME%.txt REM Converting DER certificate to PEM format openssl x509 -inform DER -in "%DER_CERTIFICATE_LOCATION%" -outform PEM -out "%PEM_CERTIFICATE_LOCATION%" || GOTO SUBR_OPENSSL_ERROR REM Revoking certificate openssl ca -config "%OPENSSL_CONF%" -revoke "%PEM_CERTIFICATE_LOCATION%" -cert "%CA_CERTIFICATE%" -keyfile "%CA_PRIVATE_KEY%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :update_revocation_list IF %1.==. GOTO function_arguments_error SET CA_NAME=%~1 SET REVOCATION_LIST_LOCATION=%STORE_PATH%\crl\%CA_NAME%.crl SET CA_CERTIFICATE=%STORE_PATH%\certs\%CA_NAME%.pem SET CA_PRIVATE_KEY=%STORE_PATH%\private\%CA_NAME%.pem REM These variables are referenced from the OpenSSL configuration file SET G_CA_DATABASE_LOCATION=%STORE_PATH%\database_%CA_NAME%.txt SET G_CA_SERIAL_NUMBER_LOCATION=%STORE_PATH%\serial_%CA_NAME%.txt SET G_CA_CRL_NUMBER_LOCATION=%STORE_PATH%\crlnumber_%CA_NAME%.txt REM Generate CRL openssl ca -config "%OPENSSL_CONF%" -gencrl -crldays 1825 -out "%REVOCATION_LIST_LOCATION%" -cert "%CA_CERTIFICATE%" -keyfile "%CA_PRIVATE_KEY%" || GOTO SUBR_OPENSSL_ERROR REM Convert CRL from PEM to DER format openssl crl -inform PEM -in "%REVOCATION_LIST_LOCATION%" -outform DER -out "%REVOCATION_LIST_LOCATION%" || GOTO SUBR_OPENSSL_ERROR GOTO:EOF REM ================================================================ :deploy_certificate IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET DEPLOYED_STORE_LOCATION=%~2 SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME%.der SET PRIVATE_KEY_LOCATION=%STORE_PATH%\private\%NAME%.pem SET TARGET_CERTIFICATE_LOCATION=%DEPLOYED_STORE_LOCATION%\certs\%NAME%.der SET TARGET_PRIVATE_KEY_LOCATION=%DEPLOYED_STORE_LOCATION%\private\%NAME%.pem COPY /Y "%CERTIFICATE_LOCATION%" "%TARGET_CERTIFICATE_LOCATION%" || GOTO SUBR_DEPLOY_FILE_ERROR COPY /Y "%PRIVATE_KEY_LOCATION%" "%TARGET_PRIVATE_KEY_LOCATION%" || GOTO SUBR_DEPLOY_FILE_ERROR GOTO:EOF REM ================================================================ :deploy_revocation_list IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET CA_NAME=%~1 SET DEPLOYED_STORE_LOCATION=%~2 SET REVOCATION_LIST_LOCATION=%STORE_PATH%\crl\%CA_NAME%.crl SET TARGET_REVOCATION_LIST_LOCATION=%DEPLOYED_STORE_LOCATION%\crl\%CA_NAME%.crl COPY /Y "%REVOCATION_LIST_LOCATION%" "%TARGET_REVOCATION_LIST_LOCATION%" || GOTO SUBR_DEPLOY_FILE_ERROR GOTO:EOF REM ================================================================ :copy_needed_files IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET NAME=%~1 SET DEPLOYED_STORE_LOCATION=%~2 SET CERTIFICATE_LOCATION=%STORE_PATH%\certs\%NAME% SET TARGET_CERTIFICATE_LOCATION=%DEPLOYED_STORE_LOCATION%\%NAME% COPY /Y "%CERTIFICATE_LOCATION%" "%TARGET_CERTIFICATE_LOCATION%" || GOTO SUBR_DEPLOY_FILE_ERROR GOTO:EOF REM ================================================================ :create_all_issued_certificates IF %1.==. GOTO function_arguments_error IF %2.==. GOTO function_arguments_error SET CATOISSUECERTIFICATESFROM=%~1 SET PATHTORI=%~2 ECHO Creating all issued certificates for %CATOISSUECERTIFICATESFROM% which is %PATHORI% ECHO. ECHO. ECHO ===================================== ECHO = Issue a trusted Certificate from %CATOISSUECERTIFICATESFROM% for the CTT ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_appT SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Issue a untrusted Certificate from %CATOISSUECERTIFICATESFROM% for the CTT ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_appU SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Revoke an issued Certificate from %CATOISSUECERTIFICATESFROM% for the trusted folder ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_appTR SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:revoke_certificate "%CERTCN%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:update_revocation_list "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_revocation_list "%CATOISSUECERTIFICATESFROM%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_AI_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Revoke a second issued Certificate from %CATOISSUECERTIFICATESFROM% which is not trusted ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_appUR SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:revoke_certificate "%CERTCN%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:update_revocation_list "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_revocation_list "%CATOISSUECERTIFICATESFROM%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM Now lets issue the user certs for this ca SET G_SUBJECT_ALTERNATIVE_NAME=URI:compliance@opcfoundation.org ECHO. ECHO. ECHO ===================================== ECHO = Issue a trusted User Certificate from %CATOISSUECERTIFICATESFROM% for the CTT ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_usrT SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Issue a untrusted User Certificate from %CATOISSUECERTIFICATESFROM% for the CTT ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_usrU SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Revoke an issued User Certificate from %CATOISSUECERTIFICATESFROM% for the trusted folder ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_usrTR SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:revoke_certificate "%CERTCN%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:update_revocation_list "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:deploy_revocation_list "%CATOISSUECERTIFICATESFROM%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR CALL:copy_needed_files "%CERTCN%.der" "%CS_USER_PKI%\trusted\certs" || GOTO BATCH_END_ERROR ECHO. ECHO. ECHO ===================================== ECHO = Revoke a second issued Certificate from %CATOISSUECERTIFICATESFROM% which is not trusted ECHO ===================================== SET CERTCN=%CATOISSUECERTIFICATESFROM%_usrUR SET X509_SUBJ=/C=%CERTC%/L=%CERTL%/ST=%CERTS%/O=%CERTO%/CN=%CERTCN%/DC=%HOSTNAME% CALL:create_issued_certificate "%CERTCN%" "%X509_SUBJ%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:revoke_certificate "%CERTCN%" "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:update_revocation_list "%CATOISSUECERTIFICATESFROM%" || GOTO BATCH_END_ERROR CALL:deploy_certificate "%CERTCN%" "%DEPLOYED_SERVER_STORE_PATH%" || GOTO BATCH_END_ERROR REM Reset the Subject alternative name SET G_SUBJECT_ALTERNATIVE_NAME=%SUBJECT_ALTERNATIVE_NAME% GOTO:EOF REM ================================================================ :function_arguments_error ECHO Invalid arguments when calling script function EXIT /B 1 :SUBR_OPENSSL_ERROR ECHO OpenSSL exited with an error EXIT /B 1 :SUBR_DEPLOY_FILE_ERROR ECHO Failed to deploy file EXIT /B 1 :BATCH_END_SUCCESS REM Delete temporary store location RMDIR "%STORE_PATH%" /S /Q ECHO. ECHO. ECHO ~~~ Certificates successfully created ~~~ ENDLOCAL EXIT /B 0 :BATCH_END_ERROR REM Delete PKI folder RMDIR "%STORE_PATH%" /S /Q RMDIR "%DEPLOYED_SERVER_PKI_PATH%" /S /Q RMDIR "%DEPLOYED_CLIENT_PKI_PATH%" /S /Q ECHO. ECHO. ECHO ~~~ Failed to create certificates ~~~ ENDLOCAL EXIT /B 1 |
|
Fixed windows certificate generation batch to be locality independent. |
|
reviewed in CMP call - agreed to change and closed |
Date Modified | Username | Field | Change |
---|---|---|---|
2021-01-14 09:35 | Uwe Stadelmann | New Issue | |
2021-01-15 06:10 | Paul Hunkar | Assigned To | => Alexander Allmendinger |
2021-01-15 06:10 | Paul Hunkar | Status | new => assigned |
2021-01-17 00:44 | Alexander Allmendinger | File Added: create_ctt_pki.bat | |
2021-01-17 00:44 | Alexander Allmendinger | Note Added: 0013530 | |
2021-01-17 20:03 | Alexander Allmendinger | File Added: create_ctt_pki.sh | |
2021-01-17 20:03 | Alexander Allmendinger | Note Added: 0013531 | |
2021-01-17 20:10 | Alexander Allmendinger | Status | assigned => resolved |
2021-01-17 20:10 | Alexander Allmendinger | Resolution | open => fixed |
2021-01-17 20:10 | Alexander Allmendinger | Fixed in Version | => 1.03.341.398 |
2021-01-17 20:10 | Alexander Allmendinger | Note Added: 0013532 | |
2021-01-25 09:29 | Alexander Allmendinger | Status | resolved => feedback |
2021-01-25 09:29 | Alexander Allmendinger | Resolution | fixed => reopened |
2021-01-25 09:29 | Alexander Allmendinger | Note Added: 0013599 | |
2021-01-25 10:41 | Alexander Allmendinger | File Added: create_ctt_pki-2.bat | |
2021-01-25 10:41 | Alexander Allmendinger | Note Added: 0013600 | |
2021-01-25 10:41 | Alexander Allmendinger | Status | feedback => resolved |
2021-01-25 10:41 | Alexander Allmendinger | Resolution | reopened => fixed |
2021-01-25 10:41 | Alexander Allmendinger | Note Added: 0013601 | |
2021-02-09 16:13 | Alexander Allmendinger | Relationship added | has duplicate 0006471 |
2021-03-25 14:24 | Paul Hunkar | Relationship added | related to 0006704 |
2021-03-25 14:25 | Paul Hunkar | Status | resolved => closed |
2021-03-25 14:25 | Paul Hunkar | Note Added: 0014065 |