126d0e837Smanashsarma*** Settings *** 226d0e837Smanashsarma 326d0e837Smanashsarma 426d0e837SmanashsarmaDocumentation Suite to test certificate via DMTF redfishtool. 526d0e837Smanashsarma 626d0e837SmanashsarmaLibrary OperatingSystem 726d0e837SmanashsarmaLibrary String 826d0e837SmanashsarmaLibrary Collections 926d0e837Smanashsarma 1026d0e837SmanashsarmaResource ../../lib/resource.robot 1126d0e837SmanashsarmaResource ../../lib/bmc_redfish_resource.robot 1226d0e837SmanashsarmaResource ../../lib/openbmc_ffdc.robot 1326d0e837SmanashsarmaResource ../../lib/certificate_utils.robot 14579d8253SmanashsarmaResource ../../lib/dmtf_redfishtool_utils.robot 1526d0e837Smanashsarma 1626d0e837SmanashsarmaSuite Setup Suite Setup Execution 1726d0e837Smanashsarma 1826d0e837Smanashsarma 1926d0e837Smanashsarma*** Variables *** 2026d0e837Smanashsarma 2126d0e837Smanashsarma${root_cmd_args} = SEPARATOR= 2226d0e837Smanashsarma... redfishtool raw -r ${OPENBMC_HOST} -u ${OPENBMC_USERNAME} -p ${OPENBMC_PASSWORD} -S Always 2326d0e837Smanashsarma 2426d0e837Smanashsarma 2526d0e837Smanashsarma*** Test Cases *** 2626d0e837Smanashsarma 2726d0e837Smanashsarma 2826d0e837SmanashsarmaVerify Redfishtool Replace Server Certificate Valid CertKey 2926d0e837Smanashsarma [Documentation] Verify replace server certificate. 3026d0e837Smanashsarma [Tags] Verify_Redfishtool_Replace_Server_Certificate_Valid_CertKey 3126d0e837Smanashsarma 3226d0e837Smanashsarma Verify Redfishtool Replace Certificate Server Valid Certificate Valid Privatekey ok 3326d0e837Smanashsarma 3426d0e837Smanashsarma 3526d0e837SmanashsarmaVerify Redfishtool Replace Client Certificate Valid CertKey 3626d0e837Smanashsarma [Documentation] Verify replace client certificate. 3726d0e837Smanashsarma [Tags] Verify_Redfishtool_Replace_Client_Certificate_Valid_CertKey 3826d0e837Smanashsarma 3926d0e837Smanashsarma Verify Redfishtool Replace Certificate Client Valid Certificate Valid Privatekey ok 4026d0e837Smanashsarma 4126d0e837Smanashsarma 4226d0e837SmanashsarmaVerify Redfishtool Replace CA Certificate Valid Cert 4326d0e837Smanashsarma [Documentation] Verify replace CA certificate. 4426d0e837Smanashsarma [Tags] Verify_Redfishtool_Replace_CA_Certificate_Valid_Cert 4526d0e837Smanashsarma 4626d0e837Smanashsarma Verify Redfishtool Replace Certificate CA Valid Certificate ok 4726d0e837Smanashsarma 4826d0e837Smanashsarma 4926d0e837SmanashsarmaVerify Redfishtool Client Certificate Install Valid CertKey 5026d0e837Smanashsarma [Documentation] Verify client certificate installation. 5126d0e837Smanashsarma [Tags] Verify_Redfishtool_Client_Certificate_Install_Valid_CertKey 5226d0e837Smanashsarma 5326d0e837Smanashsarma Verify Redfishtool Install Certificate Client Valid Certificate Valid Privatekey ok 5426d0e837Smanashsarma 5526d0e837Smanashsarma 5626d0e837SmanashsarmaVerify Redfishtool CA Certificate Install Valid Cert 5726d0e837Smanashsarma [Documentation] Verify CA Certificate installation. 5826d0e837Smanashsarma [Tags] Verify_Redfishtool_CA_Certificate_Install_Valid_Cert 5926d0e837Smanashsarma 6026d0e837Smanashsarma Verify Redfishtool Install Certificate CA Valid Certificate ok 6126d0e837Smanashsarma 6226d0e837Smanashsarma 6326d0e837SmanashsarmaVerify Redfishtool Replace Server Certificate Errors 6426d0e837Smanashsarma [Documentation] Verify error while replacing invalid server certificate. 6526d0e837Smanashsarma [Tags] Verify_Redfishtool_Replace_Server_Certificate_Errors 6626d0e837Smanashsarma [Template] Verify Redfishtool Replace Certificate 6726d0e837Smanashsarma 6826d0e837Smanashsarma Server Empty Certificate Empty Privatekey error 6926d0e837Smanashsarma Server Empty Certificate Valid Privatekey error 7026d0e837Smanashsarma Server Valid Certificate Empty Privatekey error 7126d0e837Smanashsarma 7226d0e837Smanashsarma 7326d0e837SmanashsarmaVerify Redfishtool Replace Client Certificate Errors 7426d0e837Smanashsarma [Documentation] Verify error while replacing invalid client certificate. 7526d0e837Smanashsarma [Tags] Verify_Redfishtool_Replace_Client_Certificate_Errors 7626d0e837Smanashsarma [Template] Verify Redfishtool Replace Certificate 7726d0e837Smanashsarma 7826d0e837Smanashsarma Client Empty Certificate Empty Privatekey error 7926d0e837Smanashsarma Client Empty Certificate Valid Privatekey error 8026d0e837Smanashsarma Client Valid Certificate Empty Privatekey error 8126d0e837Smanashsarma 8226d0e837Smanashsarma 8326d0e837SmanashsarmaVerify Redfishtool Replace CA Certificate Errors 8426d0e837Smanashsarma [Documentation] Verify error while replacing invalid CA certificate. 8526d0e837Smanashsarma [Tags] Verify_Redfishtool_Replace_CA_Certificate_Errors 8626d0e837Smanashsarma [Template] Verify Redfishtool Replace Certificate 8726d0e837Smanashsarma 8826d0e837Smanashsarma CA Empty Certificate error 8926d0e837Smanashsarma 9026d0e837Smanashsarma 9126d0e837SmanashsarmaVerify Redfishtool Client Certificate Install Errors 9226d0e837Smanashsarma [Documentation] Verify error while installing invalid client certificate. 9326d0e837Smanashsarma [Tags] Verify_Redfishtool_Client_Certificate_Install_Errors 9426d0e837Smanashsarma [Template] Verify Redfishtool Install Certificate 9526d0e837Smanashsarma 9626d0e837Smanashsarma Client Empty Certificate Empty Privatekey error 9726d0e837Smanashsarma Client Empty Certificate Valid Privatekey error 9826d0e837Smanashsarma Client Valid Certificate Empty Privatekey error 9926d0e837Smanashsarma 10026d0e837Smanashsarma 101*c0efe585SmanashsarmaVerify Redfishtool CA Certificate Install Errors 102*c0efe585Smanashsarma [Documentation] Verify error while installing invalid CA certificate. 103*c0efe585Smanashsarma [Tags] Verify_Redfishtool_CA_Certificate_Install_Errors 104*c0efe585Smanashsarma [Template] Verify Redfishtool Install Certificate 105*c0efe585Smanashsarma 106*c0efe585Smanashsarma # cert_type cert_format expected_status 107*c0efe585Smanashsarma CA Empty Certificate error 108*c0efe585Smanashsarma 109*c0efe585Smanashsarma 110*c0efe585SmanashsarmaVerify Error While Uploding Same CA Certificate Via Redfishtool 111*c0efe585Smanashsarma [Documentation] Verify error while uploading same CA certificate two times. 112*c0efe585Smanashsarma [Tags] Verify_Error_While_Uploding_Same_CA_Certificate_Via_Redfishtool 113*c0efe585Smanashsarma 114*c0efe585Smanashsarma # Create certificate file for uploading. 115*c0efe585Smanashsarma ${cert_file_path}= Generate Certificate File Via Openssl Valid Certificate 365 116*c0efe585Smanashsarma ${bytes}= OperatingSystem.Get Binary File ${cert_file_path} 117*c0efe585Smanashsarma ${file_data}= Decode Bytes To String ${bytes} UTF-8 118*c0efe585Smanashsarma 119*c0efe585Smanashsarma # Install CA certificate. 120*c0efe585Smanashsarma Redfishtool Install Certificate File On BMC ${REDFISH_CA_CERTIFICATE_URI} ok data=${file_data} 121*c0efe585Smanashsarma 122*c0efe585Smanashsarma # Adding delay after certificate installation. 123*c0efe585Smanashsarma Sleep 30s 124*c0efe585Smanashsarma 125*c0efe585Smanashsarma # Check error while uploading same certificate. 126*c0efe585Smanashsarma Redfishtool Install Certificate File On BMC ${REDFISH_CA_CERTIFICATE_URI} error data=${file_data} 127*c0efe585Smanashsarma 128*c0efe585Smanashsarma 129*c0efe585SmanashsarmaInstall Server Certificate Using Redfishtool And Verify Via OpenSSL 130*c0efe585Smanashsarma [Documentation] Install server certificate using Redfishtool and verify via OpenSSL. 131*c0efe585Smanashsarma [Tags] Install_Server_Certificate_Using_Redfishtool_And_Verify_Via_OpenSSL. 132*c0efe585Smanashsarma 133*c0efe585Smanashsarma ${cert_file_path}= Generate Certificate File Via Openssl Valid Certificate Valid Privatekey 134*c0efe585Smanashsarma ${bytes}= OperatingSystem.Get Binary File ${cert_file_path} 135*c0efe585Smanashsarma ${file_data}= Decode Bytes To String ${bytes} UTF-8 136*c0efe585Smanashsarma 137*c0efe585Smanashsarma ${certificate_dict}= Create Dictionary 138*c0efe585Smanashsarma ... @odata.id=/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1 139*c0efe585Smanashsarma 140*c0efe585Smanashsarma ${dict_objects}= Create Dictionary CertificateString=${file_data} 141*c0efe585Smanashsarma ... CertificateType=PEM CertificateUri=${certificate_dict} 142*c0efe585Smanashsarma 143*c0efe585Smanashsarma ${string}= Convert To String ${dict_objects} 144*c0efe585Smanashsarma ${string}= Replace String ${string} ' " 145*c0efe585Smanashsarma ${payload}= Set Variable '${string}' 146*c0efe585Smanashsarma 147*c0efe585Smanashsarma ${response}= Redfishtool Post 148*c0efe585Smanashsarma ... ${payload} /redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate 149*c0efe585Smanashsarma 150*c0efe585Smanashsarma Wait Until Keyword Succeeds 2 mins 15 secs Verify Certificate Visible Via OpenSSL ${cert_file_path} 151*c0efe585Smanashsarma 15226d0e837Smanashsarma*** Keywords *** 15326d0e837Smanashsarma 15426d0e837Smanashsarma 15526d0e837SmanashsarmaVerify Redfishtool Install Certificate 15626d0e837Smanashsarma [Documentation] Install and verify certificate using Redfishtool. 15726d0e837Smanashsarma [Arguments] ${cert_type} ${cert_format} ${expected_status} ${delete_cert}=${True} 15826d0e837Smanashsarma 15926d0e837Smanashsarma # Description of argument(s): 16026d0e837Smanashsarma # cert_type Certificate type (e.g. "Client" or "CA"). 16126d0e837Smanashsarma # cert_format Certificate file format 16226d0e837Smanashsarma # expected_status Expected status of certificate install Redfishtool 16326d0e837Smanashsarma # request (i.e. "ok" or "error"). 16426d0e837Smanashsarma # delete_cert Certificate will be deleted before installing if this True. 16526d0e837Smanashsarma 16626d0e837Smanashsarma Run Keyword If '${cert_type}' == 'CA' and '${delete_cert}' == '${True}' 16726d0e837Smanashsarma ... Delete All CA Certificate Via Redfisthtool 16826d0e837Smanashsarma ... ELSE IF '${cert_type}' == 'Client' and '${delete_cert}' == '${True}' 16926d0e837Smanashsarma ... Redfishtool Delete Certificate Via BMC CLI ${cert_type} 17026d0e837Smanashsarma 17126d0e837Smanashsarma ${cert_file_path}= Generate Certificate File Via Openssl ${cert_format} 17226d0e837Smanashsarma ${bytes}= OperatingSystem.Get Binary File ${cert_file_path} 17326d0e837Smanashsarma ${file_data}= Decode Bytes To String ${bytes} UTF-8 17426d0e837Smanashsarma 17526d0e837Smanashsarma ${certificate_uri}= Set Variable If 17626d0e837Smanashsarma ... '${cert_type}' == 'Client' ${REDFISH_LDAP_CERTIFICATE_URI} 17726d0e837Smanashsarma ... '${cert_type}' == 'CA' ${REDFISH_CA_CERTIFICATE_URI} 17826d0e837Smanashsarma 17926d0e837Smanashsarma ${cert_id}= Redfishtool Install Certificate File On BMC 18026d0e837Smanashsarma ... ${certificate_uri} ${expected_status} data=${file_data} 18126d0e837Smanashsarma Logging Installed certificate id: ${cert_id} 18226d0e837Smanashsarma 18326d0e837Smanashsarma # Adding delay after certificate installation. 18426d0e837Smanashsarma Sleep 30s 18526d0e837Smanashsarma 18626d0e837Smanashsarma ${cert_file_content}= OperatingSystem.Get File ${cert_file_path} 18726d0e837Smanashsarma 18826d0e837Smanashsarma ${bmc_cert_content}= Run Keyword If '${expected_status}' == 'ok' 18926d0e837Smanashsarma ... Redfishtool GetAttribute ${certificate_uri}/${cert_id} CertificateString 19026d0e837Smanashsarma 19126d0e837Smanashsarma Run Keyword If '${expected_status}' == 'ok' Should Contain ${cert_file_content} ${bmc_cert_content} 19226d0e837Smanashsarma 19326d0e837Smanashsarma [Return] ${cert_id} 19426d0e837Smanashsarma 19526d0e837Smanashsarma 19626d0e837SmanashsarmaDelete All CA Certificate Via Redfisthtool 19726d0e837Smanashsarma [Documentation] Delete all CA certificate via Redfish. 19826d0e837Smanashsarma 19926d0e837Smanashsarma ${cmd_output}= Redfishtool Get /redfish/v1/Managers/bmc/Truststore/Certificates 20026d0e837Smanashsarma ${json_object}= To JSON ${cmd_output} 20126d0e837Smanashsarma ${cert_list}= Set Variable ${json_object["Members"]} 20226d0e837Smanashsarma FOR ${cert} IN @{cert_list} 203579d8253Smanashsarma Redfishtool Delete ${cert["@odata.id"]} ${root_cmd_args} 20426d0e837Smanashsarma END 20526d0e837Smanashsarma 20626d0e837Smanashsarma 20726d0e837SmanashsarmaRedfishtool Delete Certificate Via BMC CLI 20826d0e837Smanashsarma [Documentation] Delete certificate via BMC CLI. 20926d0e837Smanashsarma [Arguments] ${cert_type} 21026d0e837Smanashsarma 21126d0e837Smanashsarma # Description of argument(s): 21226d0e837Smanashsarma # cert_type Certificate type (e.g. "Client" or "CA"). 21326d0e837Smanashsarma 21426d0e837Smanashsarma ${certificate_file_path} ${certificate_service} ${certificate_uri}= 21526d0e837Smanashsarma ... Run Keyword If '${cert_type}' == 'Client' 21626d0e837Smanashsarma ... Set Variable /etc/nslcd/certs/cert.pem phosphor-certificate-manager@nslcd.service 21726d0e837Smanashsarma ... ${REDFISH_LDAP_CERTIFICATE_URI} 21826d0e837Smanashsarma ... ELSE IF '${cert_type}' == 'CA' 21926d0e837Smanashsarma ... Set Variable ${ROOT_CA_FILE_PATH} phosphor-certificate-manager@authority.service 22026d0e837Smanashsarma ... ${REDFISH_CA_CERTIFICATE_URI} 22126d0e837Smanashsarma 22226d0e837Smanashsarma ${file_status} ${stderr} ${rc}= BMC Execute Command 22326d0e837Smanashsarma ... [ -f ${certificate_file_path} ] && echo "Found" || echo "Not Found" 22426d0e837Smanashsarma 22526d0e837Smanashsarma Return From Keyword If "${file_status}" != "Found" 22626d0e837Smanashsarma BMC Execute Command rm ${certificate_file_path} 22726d0e837Smanashsarma BMC Execute Command systemctl restart ${certificate_service} 22826d0e837Smanashsarma BMC Execute Command systemctl daemon-reload 22926d0e837Smanashsarma 23026d0e837Smanashsarma 23126d0e837SmanashsarmaRedfishtool Install Certificate File On BMC 23226d0e837Smanashsarma [Documentation] Install certificate file in BMC using POST operation. 23326d0e837Smanashsarma [Arguments] ${uri} ${status}=ok &{kwargs} 23426d0e837Smanashsarma 23526d0e837Smanashsarma # Description of argument(s): 23626d0e837Smanashsarma # uri URI for installing certificate file via Redfishtool. 23726d0e837Smanashsarma # e.g. "/redfish/v1/AccountService/LDAP/Certificates". 23826d0e837Smanashsarma # status Expected status of certificate installation via Redfishtool. 23926d0e837Smanashsarma # e.g. error, ok. 24026d0e837Smanashsarma # kwargs A dictionary of keys/values to be passed directly to 24126d0e837Smanashsarma # POST Request. 24226d0e837Smanashsarma 24326d0e837Smanashsarma Initialize OpenBMC 20 ${quiet}=${1} ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 24426d0e837Smanashsarma 24526d0e837Smanashsarma ${headers}= Create Dictionary Content-Type=application/octet-stream 24626d0e837Smanashsarma ... X-Auth-Token=${XAUTH_TOKEN} 24726d0e837Smanashsarma Set To Dictionary ${kwargs} headers ${headers} 24826d0e837Smanashsarma 24926d0e837Smanashsarma ${ret}= Post Request openbmc ${uri} &{kwargs} 25026d0e837Smanashsarma ${content_json}= To JSON ${ret.content} 25126d0e837Smanashsarma ${cert_id}= Set Variable If '${ret.status_code}' == '${HTTP_OK}' ${content_json["Id"]} -1 25226d0e837Smanashsarma 25326d0e837Smanashsarma Run Keyword If '${status}' == 'ok' 25426d0e837Smanashsarma ... Should Be Equal As Strings ${ret.status_code} ${HTTP_OK} 25526d0e837Smanashsarma ... ELSE IF '${status}' == 'error' 25626d0e837Smanashsarma ... Should Be Equal As Strings ${ret.status_code} ${HTTP_INTERNAL_SERVER_ERROR} 25726d0e837Smanashsarma 25826d0e837Smanashsarma Delete All Sessions 25926d0e837Smanashsarma 26026d0e837Smanashsarma [Return] ${cert_id} 26126d0e837Smanashsarma 26226d0e837Smanashsarma 26326d0e837SmanashsarmaVerify Redfishtool Replace Certificate 26426d0e837Smanashsarma [Documentation] Verify replace server certificate. 26526d0e837Smanashsarma [Arguments] ${cert_type} ${cert_format} ${expected_status} 26626d0e837Smanashsarma 26726d0e837Smanashsarma # Description of argument(s): 26826d0e837Smanashsarma # cert_type Certificate type (e.g. "Client", "Server" or "CA"). 26926d0e837Smanashsarma # cert_format Certificate file format 27026d0e837Smanashsarma # (e.g. "Valid_Certificate_Valid_Privatekey"). 27126d0e837Smanashsarma # expected_status Expected status of certificate replace Redfishtool 27226d0e837Smanashsarma # request (i.e. "ok" or "error"). 27326d0e837Smanashsarma 27426d0e837Smanashsarma # Install certificate before replacing client or CA certificate. 27526d0e837Smanashsarma ${cert_id}= Run Keyword If '${cert_type}' == 'Client' 27626d0e837Smanashsarma ... Verify Redfishtool Install Certificate ${cert_type} Valid Certificate Valid Privatekey ok 27726d0e837Smanashsarma ... ELSE IF '${cert_type}' == 'CA' 27826d0e837Smanashsarma ... Verify Redfishtool Install Certificate ${cert_type} Valid Certificate ok 27926d0e837Smanashsarma 28026d0e837Smanashsarma ${cert_file_path}= Generate Certificate File Via Openssl ${cert_format} 28126d0e837Smanashsarma ${bytes}= OperatingSystem.Get Binary File ${cert_file_path} 28226d0e837Smanashsarma ${file_data}= Decode Bytes To String ${bytes} UTF-8 28326d0e837Smanashsarma 28426d0e837Smanashsarma ${certificate_uri}= Set Variable If 28526d0e837Smanashsarma ... '${cert_type}' == 'Server' ${REDFISH_HTTPS_CERTIFICATE_URI}/1 28626d0e837Smanashsarma ... '${cert_type}' == 'Client' ${REDFISH_LDAP_CERTIFICATE_URI}/1 28726d0e837Smanashsarma ... '${cert_type}' == 'CA' ${REDFISH_CA_CERTIFICATE_URI}/${cert_id} 28826d0e837Smanashsarma 28926d0e837Smanashsarma ${certificate_dict}= Create Dictionary @odata.id=${certificate_uri} 29026d0e837Smanashsarma ${dict_objects}= Create Dictionary CertificateString=${file_data} 29126d0e837Smanashsarma ... CertificateType=PEM CertificateUri=${certificate_dict} 29226d0e837Smanashsarma ${string}= Convert To String ${dict_objects} 29326d0e837Smanashsarma ${string}= Replace String ${string} ' " 29426d0e837Smanashsarma ${payload}= Set Variable '${string}' 29526d0e837Smanashsarma 29626d0e837Smanashsarma ${expected_resp}= Set Variable If '${expected_status}' == 'ok' ${HTTP_OK} 29726d0e837Smanashsarma ... '${expected_status}' == 'error' ${HTTP_NOT_FOUND} 29826d0e837Smanashsarma 29926d0e837Smanashsarma ${response}= Redfishtool Post 300f510346dSAnusha Dathatri ... ${payload} /redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate 301f510346dSAnusha Dathatri ... expected_error=${expected_resp} 30226d0e837Smanashsarma 30326d0e837Smanashsarma ${cert_file_content}= OperatingSystem.Get File ${cert_file_path} 30426d0e837Smanashsarma ${bmc_cert_content}= Redfishtool GetAttribute ${certificate_uri} CertificateString 30526d0e837Smanashsarma 30626d0e837Smanashsarma Run Keyword If '${expected_status}' == 'ok' 30726d0e837Smanashsarma ... Should Contain ${cert_file_content} ${bmc_cert_content} 30826d0e837Smanashsarma ... ELSE 30926d0e837Smanashsarma ... Should Not Contain ${cert_file_content} ${bmc_cert_content} 31026d0e837Smanashsarma 31126d0e837Smanashsarma 31226d0e837SmanashsarmaRedfishtool GetAttribute 31326d0e837Smanashsarma [Documentation] Execute redfishtool for GET operation. 31426d0e837Smanashsarma [Arguments] ${uri} ${Attribute} ${cmd_args}=${root_cmd_args} ${expected_error}="" 31526d0e837Smanashsarma 31626d0e837Smanashsarma # Description of argument(s): 31726d0e837Smanashsarma # uri URI for GET operation (e.g. /redfish/v1/AccountService/Accounts/). 31826d0e837Smanashsarma # Attribute The specific attribute to be retrieved with the URI. 31926d0e837Smanashsarma # cmd_args Commandline arguments. 32026d0e837Smanashsarma # expected_error Expected error optionally provided in testcase (e.g. 401 / 32126d0e837Smanashsarma # authentication error, etc. ). 32226d0e837Smanashsarma 32326d0e837Smanashsarma ${rc} ${cmd_output}= Run and Return RC and Output ${cmd_args} GET ${uri} 32426d0e837Smanashsarma Run Keyword If ${rc} != 0 Is HTTP error Expected ${cmd_output} ${expected_error} 32526d0e837Smanashsarma ${json_object}= To JSON ${cmd_output} 32626d0e837Smanashsarma 32726d0e837Smanashsarma [Return] ${json_object["CertificateString"]} 32826d0e837Smanashsarma 32926d0e837Smanashsarma 33026d0e837SmanashsarmaSuite Setup Execution 33126d0e837Smanashsarma [Documentation] Do suite setup execution. 33226d0e837Smanashsarma 33326d0e837Smanashsarma ${tool_exist}= Run which redfishtool 33426d0e837Smanashsarma Should Not Be Empty ${tool_exist} 33526d0e837Smanashsarma 33626d0e837Smanashsarma # Create certificate sub-directory in current working directory. 33726d0e837Smanashsarma Create Directory certificate_dir 338