diff --git a/lib/certificate_utils.robot b/lib/certificate_utils.robot
new file mode 100755
index 0000000..4e0a83c
--- /dev/null
+++ b/lib/certificate_utils.robot
@@ -0,0 +1,134 @@
+*** Settings ***
+Documentation  Certificate utilities keywords.
+
+Library        OperatingSystem
+Resource       rest_client.robot
+Resource       resource.txt
+
+
+*** Keywords ***
+
+Install Certificate File On BMC
+    [Documentation]  Install certificate file in BMC using REST PUT operation.
+    [Arguments]  ${uri}  ${status}=ok  ${quiet}=${1}  &{kwargs}
+
+    # Description of argument(s):
+    # uri         URI for installing certificate file via REST
+    #             e.g. "/xyz/openbmc_project/certs/server/https".
+    # status      Expected status of certificate installation via REST
+    #             e.g. error, ok.
+    # quiet       If enabled, turns off logging to console.
+    # kwargs      A dictionary of keys/values to be passed directly to
+    #             PUT Request.
+
+    Initialize OpenBMC  quiet=${quiet}
+
+    ${headers}=  Create Dictionary  Content-Type=application/octet-stream
+    Set To Dictionary  ${kwargs}  headers  ${headers}
+
+    Run Keyword If  '${quiet}' == '${0}'  Log Request  method=Put
+    ...  base_uri=${uri}  args=&{kwargs}
+
+    ${ret}=  Put Request  openbmc  ${uri}  &{kwargs}
+    Run Keyword If  '${quiet}' == '${0}'  Log Response  ${ret}
+
+    Run Keyword If  '${status}' == 'ok'
+    ...  Should Be Equal As Strings  ${ret.status_code}  ${HTTP_OK}
+    ...  ELSE IF  '${status}' == 'error'
+    ...  Should Be Equal As Strings  ${ret.status_code}  ${HTTP_BAD_REQUEST}
+
+    Delete All Sessions
+
+
+Get Certificate Content From BMC Via Openssl
+    [Documentation]  Get certificate content from BMC via openssl.
+
+    Check If Openssl Tool Exist
+
+    ${openssl_cmd}=  Catenate
+    ...  openssl s_client -connect ${OPENBMC_HOST}:443 -showcerts
+    ${rc}  ${output}=  Run And Return RC and Output  ${openssl_cmd}
+    Should Be Equal  ${rc}  ${0}  msg=${output}
+
+    ${result}=  Fetch From Left
+    ...  ${output}  -----END CERTIFICATE-----
+    ${result}=  Fetch From Right  ${result}  -----BEGIN CERTIFICATE-----
+    [Return]  ${result}
+
+
+Get Client Certificate File Content From BMC
+    [Documentation]  Get client certificate file content from BMC.
+
+    ${certificate}  ${stderr}  ${rc}=  BMC Execute Command
+    ...  cat /etc/nslcd/certs/cert.pem
+    Should Be Equal  ${rc}  ${0}  msg=${stderr}
+
+    [Return]  ${certificate}
+
+
+Generate Certificate File Via Openssl
+    [Documentation]  Create certificate file via openssl with required content
+    ...              and returns its path.
+    [Arguments]  ${cert_format}  ${time}=365
+
+    # Description of argument(s):
+    # cert_format          Certificate file format
+    #                      e.g. Valid_Certificate_Empty_Privatekey.
+    # time                 Number of days to certify the certificate for.
+
+    Check If Openssl Tool Exist
+
+    ${openssl_cmd}=  Catenate  openssl req -x509 -sha256 -newkey rsa:2048
+    ...  ${SPACE}-nodes -days ${time}
+    ...  ${SPACE}-keyout cert.pem -out cert.pem
+    ...  ${SPACE}-subj "/O=XYZ Corporation /CN=www.xyz.com"
+
+    ${rc}  ${output}=  Run And Return RC and Output  ${openssl_cmd}
+    Should Be Equal  ${rc}  ${0}  msg=${output}
+    OperatingSystem.File Should Exist  ${EXECDIR}${/}cert.pem
+
+    ${file_content}=  OperatingSystem.Get File  ${EXECDIR}${/}cert.pem
+    ${result}=  Fetch From Left  ${file_content}  -----END CERTIFICATE-----
+    ${cert_content}=  Fetch From Right  ${result}  -----BEGIN CERTIFICATE-----
+
+    ${result}=  Fetch From Left  ${file_content}  -----END PRIVATE KEY-----
+    ${private_key_content}=  Fetch From Right  ${result}  -----BEGIN PRIVATE KEY-----
+
+    ${cert_data}=
+    ...  Run Keyword if  '${cert_format}' == 'Valid Certificate Valid Privatekey'
+    ...  OperatingSystem.Get File  ${EXECDIR}${/}cert.pem
+    ...  ELSE IF  '${cert_format}' == 'Empty Certificate Valid Privatekey'
+    ...  Remove String  ${file_content}  ${cert_content}
+    ...  ELSE IF  '${cert_format}' == 'Valid Certificate Empty Privatekey'
+    ...  Remove String  ${file_content}  ${private_key_content}
+    ...  ELSE IF  '${cert_format}' == 'Empty Certificate Empty Privatekey'
+    ...  Remove String  ${file_content}  ${cert_content}  ${private_key_content}
+    ...  ELSE IF  '${cert_format}' == 'Expired Certificate'
+    ...  OperatingSystem.Get File  ${EXECDIR}${/}cert.pem
+
+    ${random_name}=  Generate Random String  8
+    ${cert_name}=  Catenate  SEPARATOR=  ${random_name}  .pem
+    Create File  ${cert_name}  ${cert_data}
+
+    [Return]  ${EXECDIR}${/}${cert_name}
+
+
+Get Certificate Content From File
+    [Documentation]  Get certificate content from certificate file.
+    [Arguments]  ${cert_file_path}
+
+    # Description of argument(s):
+    # cert_file_path  Downloaded certificate file path.
+
+    ${file_content}=  OperatingSystem.Get File  ${cert_file_path}
+    ${result}=  Fetch From Left  ${file_content}  -----END CERTIFICATE-----
+    ${result}=  Fetch From Right  ${result}  -----BEGIN CERTIFICATE-----
+    [Return]  ${result}
+
+
+Check If Openssl Tool Exist
+    [Documentation]  Check if openssl tool installed or not.
+
+    ${rc}  ${output}=  Run And Return RC and Output  which openssl
+    Should Not Be Empty  ${output}  msg=Openssl tool not installed.
+
