1609448f2SRahul Maheshwari## Steps to create and install CA signed certificate
2609448f2SRahul Maheshwari
3609448f2SRahul MaheshwariTo create and install a CA signed server certificate, follow these steps:
4609448f2SRahul Maheshwari
5609448f2SRahul MaheshwariA. Create your own SSL certificate authority
68293423dSRahul Maheshwari
7609448f2SRahul MaheshwariB. Generate CSR for server certificate
88293423dSRahul Maheshwari
9609448f2SRahul MaheshwariC. Create CA signed server certificate using CSR request
108293423dSRahul Maheshwari
11609448f2SRahul MaheshwariD. Install CA signed server certificate
12609448f2SRahul Maheshwari
13609448f2SRahul Maheshwari**Create your own SSL certificate authority**
14609448f2SRahul Maheshwari
15609448f2SRahul Maheshwari1. Create private key for certificate authority(CA).
16609448f2SRahul Maheshwari
1712e33526SPatrick Williams`openssl genrsa -des3 -out rootCA.key 2048`
18609448f2SRahul Maheshwari
1912e33526SPatrick WilliamsNote: You will be prompted to give a password for private key. This password
2012e33526SPatrick Williamswill be used whenever the private key is used.
21609448f2SRahul Maheshwari
22609448f2SRahul Maheshwari2. Create a root CA certificate using the private key created in step 1.
23609448f2SRahul Maheshwari
2412e33526SPatrick Williams`openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem`
25609448f2SRahul Maheshwari
2612e33526SPatrick WilliamsThis will start an interactive script to enter information that will be
2712e33526SPatrick Williamsincorporated into your certificate request.
28609448f2SRahul Maheshwari
29609448f2SRahul Maheshwari```
30609448f2SRahul MaheshwariYou are about to be asked to enter information that will be incorporated
31609448f2SRahul Maheshwariinto your certificate request.
32609448f2SRahul MaheshwariWhat you are about to enter is what is called a Distinguished Name or a DN.
33609448f2SRahul MaheshwariThere are quite a few fields but you can leave some blank
34609448f2SRahul MaheshwariFor some fields there will be a default value,
35609448f2SRahul MaheshwariIf you enter '.', the field will be left blank.
36609448f2SRahul Maheshwari-----
37609448f2SRahul MaheshwariCountry Name (2 letter code) [AU]:US
38609448f2SRahul MaheshwariState or Province Name (full name) [Some-State]:Oregon
39609448f2SRahul MaheshwariLocality Name (eg, city) []:Portland
402600f860SRahul MaheshwariOrganization Name (eg, company) [Default Company Ltd]:XYZ
41609448f2SRahul MaheshwariOrganizational Unit Name (eg, section) []:IT
422600f860SRahul MaheshwariCommon Name (eg, YOUR name) []:XYZ CERTIFICATE AUTHORITY
43609448f2SRahul MaheshwariEmail Address []:none@none.com
44609448f2SRahul Maheshwari```
45609448f2SRahul Maheshwari
46609448f2SRahul Maheshwari**Generate CSR for server certificate**
47609448f2SRahul Maheshwari
48609448f2SRahul Maheshwari1. Create CSR request file (csr_file.json) with all of the following fields.
49609448f2SRahul Maheshwari
50609448f2SRahul Maheshwari```
51609448f2SRahul Maheshwari{
52609448f2SRahul Maheshwari    "City": <City Name>,
53609448f2SRahul Maheshwari    "CertificateCollection": {
54*4d430283Sganesanb        "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/NetworkProtocol/HTTPS/Certificates/"
55609448f2SRahul Maheshwari    },
56609448f2SRahul Maheshwari    "CommonName": "<BMC_IP>",
57609448f2SRahul Maheshwari    "Country": <Country Name>,
58609448f2SRahul Maheshwari    "Organization": <Organization Name>,
59609448f2SRahul Maheshwari    "OrganizationalUnit": <Organization Unit Name>,
60609448f2SRahul Maheshwari    "State": <State Name>,
61609448f2SRahul Maheshwari    "KeyPairAlgorithm": <RSA/EC>
62609448f2SRahul Maheshwari}
63609448f2SRahul Maheshwari```
64609448f2SRahul Maheshwari
65609448f2SRahul MaheshwariExample:
6612e33526SPatrick Williams
67609448f2SRahul Maheshwari```
68609448f2SRahul Maheshwari{
69609448f2SRahul Maheshwari    "City": "Austin",
70609448f2SRahul Maheshwari    "CertificateCollection": {
71*4d430283Sganesanb        "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/NetworkProtocol/HTTPS/Certificates/"
72609448f2SRahul Maheshwari    },
732600f860SRahul Maheshwari    "CommonName": "xx.xx.xx.xx",
74609448f2SRahul Maheshwari    "Country": "US",
752600f860SRahul Maheshwari    "Organization": "ABC Limited",
762600f860SRahul Maheshwari    "OrganizationalUnit": "IT",
77609448f2SRahul Maheshwari    "State": "AU",
78609448f2SRahul Maheshwari    "KeyPairAlgorithm": "RSA"
79609448f2SRahul Maheshwari}
80609448f2SRahul Maheshwari```
81609448f2SRahul Maheshwari
82609448f2SRahul Maheshwari2. Generate CSR request using the following Redfish command.
83609448f2SRahul Maheshwari
84609448f2SRahul Maheshwari```
85609448f2SRahul Maheshwari$ curl -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" -X POST https://${BMC_IP}/redfish/v1/CertificateService/Actions/CertificateService.GenerateCSR/ -d @csr_file.json
86609448f2SRahul Maheshwari{
872600f860SRahul Maheshwari  "CSRString": "-----BEGIN CERTIFICATE REQUEST-----\nMIICyzCCAbMCAQEwgYUxDzANBgNVBAcMBkF1c3RpbjEUMBIGA1UEAwwLeHgueHgu\neHgueHgxCzAJBgNVBAYTAlVTMQ0wCwYEKw4DAgwDUlNBMR0wGwYDVR0lDBRTZXJ2\nZXJBdXRoZW50aWNhdGlvbjEUMBIGA1UECgwLQUJDIExpbWl0ZWQxCzAJBgNVBAgM\nAkFVMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7+OoXRmAI85W/5pB\nYjC5EdZ/atrPpkIxjT4sXANZLXm6/vkfR/BAxd5s8DYrifPjdfvJRv33cAPT6+pe\no/t793hdBx7Cwwzqlj3czfdbpvGp90I7BQ1OvKCo/NDmqeTm+5jphYpd8ZvKmBNC\nOfHV0sr3/dMPHME16aunDEHFJz1CzXpG5kSszRYbwcZrXC7rvmSi8UBX8BYoKWzx\nlAGdOYh9j5k/LVNQuKFJjqIfesYJ8fajgsJr8bj81o+bOzvG+zApvt+Ak8B8fqa7\nvET4jb1oeDuSi9D1/Xax+2qx3vInIQOOZz3OCVjxNLZMWOA+P86z59e/6YkXOg/Q\nkXG4uQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAOTLICzJiYerbWa6VyXv/w8b\nr160bNDvIRXJf8E2b5+27NinZb+65WVa6oxE9Ai7UEN+mHkbnDpb2vujp/wuROER\nrgmjstePJST+EqX5PuoSxbPhE0ucHw7dTZf9agfvNLlpgTUo/Lv9A2pCSDa5KZ13\nu96AFsFBjBuanUK2k7aoEc/Rl7JhfxUaXNszzYqDgwIHggYWbZO7Ku7HHbY1qYGR\nD0XaLUyXAxgB76mcud004zu7swTJxDlM+c5+i0yqflWQiVWEAOW9HDeHvnYmShuT\n+HS1vhv+x/9HDHowxiWOt2Th18uzdf+F0446fR8uoIrG1z7KdNoxipUnVKfyXTg=\n-----END CERTIFICATE REQUEST-----\n",
88609448f2SRahul Maheshwari  "CertificateCollection": {
89*4d430283Sganesanb    "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/NetworkProtocol/HTTPS/Certificates/"
90609448f2SRahul Maheshwari  }
91609448f2SRahul Maheshwari```
92609448f2SRahul Maheshwari
93265f77c9SGeorge Keishing3. Convert response into .csr file (device.csr)
94609448f2SRahul Maheshwari
95609448f2SRahul Maheshwari```
96609448f2SRahul Maheshwari$ cat device.csr
97609448f2SRahul Maheshwari-----BEGIN CERTIFICATE REQUEST-----
982600f860SRahul MaheshwariMIICyzCCAbMCAQEwgYUxDzANBgNVBAcMBkF1c3RpbjEUMBIGA1UEAwwLeHgueHgu
992600f860SRahul MaheshwarieHgueHgxCzAJBgNVBAYTAlVTMQ0wCwYEKw4DAgwDUlNBMR0wGwYDVR0lDBRTZXJ2
1002600f860SRahul MaheshwariZXJBdXRoZW50aWNhdGlvbjEUMBIGA1UECgwLQUJDIExpbWl0ZWQxCzAJBgNVBAgM
1012600f860SRahul MaheshwariAkFVMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7+OoXRmAI85W/5pB
1022600f860SRahul MaheshwariYjC5EdZ/atrPpkIxjT4sXANZLXm6/vkfR/BAxd5s8DYrifPjdfvJRv33cAPT6+pe
1032600f860SRahul Maheshwario/t793hdBx7Cwwzqlj3czfdbpvGp90I7BQ1OvKCo/NDmqeTm+5jphYpd8ZvKmBNC
1042600f860SRahul MaheshwariOfHV0sr3/dMPHME16aunDEHFJz1CzXpG5kSszRYbwcZrXC7rvmSi8UBX8BYoKWzx
1052600f860SRahul MaheshwarilAGdOYh9j5k/LVNQuKFJjqIfesYJ8fajgsJr8bj81o+bOzvG+zApvt+Ak8B8fqa7
1062600f860SRahul MaheshwarivET4jb1oeDuSi9D1/Xax+2qx3vInIQOOZz3OCVjxNLZMWOA+P86z59e/6YkXOg/Q
1072600f860SRahul MaheshwarikXG4uQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAOTLICzJiYerbWa6VyXv/w8b
1082600f860SRahul Maheshwarir160bNDvIRXJf8E2b5+27NinZb+65WVa6oxE9Ai7UEN+mHkbnDpb2vujp/wuROER
1092600f860SRahul MaheshwarirgmjstePJST+EqX5PuoSxbPhE0ucHw7dTZf9agfvNLlpgTUo/Lv9A2pCSDa5KZ13
1102600f860SRahul Maheshwariu96AFsFBjBuanUK2k7aoEc/Rl7JhfxUaXNszzYqDgwIHggYWbZO7Ku7HHbY1qYGR
1112600f860SRahul MaheshwariD0XaLUyXAxgB76mcud004zu7swTJxDlM+c5+i0yqflWQiVWEAOW9HDeHvnYmShuT
1122600f860SRahul Maheshwari+HS1vhv+x/9HDHowxiWOt2Th18uzdf+F0446fR8uoIrG1z7KdNoxipUnVKfyXTg=
113609448f2SRahul Maheshwari-----END CERTIFICATE REQUEST-----
114609448f2SRahul Maheshwari```
115609448f2SRahul Maheshwari
116609448f2SRahul Maheshwari**Create CA signed server certificate using CSR request**
117609448f2SRahul Maheshwari
11812e33526SPatrick Williams1. Use BMC generated CSR request (device.csr) to generate CA signed certificate
11912e33526SPatrick Williams   (device.crt).
12012e33526SPatrick Williams
121609448f2SRahul Maheshwari```
122609448f2SRahul Maheshwariopenssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 500 -sha256
123609448f2SRahul Maheshwari```
12412e33526SPatrick Williams
1252600f860SRahul MaheshwariNote: You will be prompted to give a password for private key.
126609448f2SRahul Maheshwari
12712e33526SPatrick Williams2. Create JSON file (certificate.json) with the device.crt file created in
12812e33526SPatrick Williams   step 1.
129609448f2SRahul Maheshwari
130609448f2SRahul Maheshwari```
131609448f2SRahul Maheshwari$ cat certificate.json
132609448f2SRahul Maheshwari{
1332600f860SRahul Maheshwari    "CertificateString": "-----BEGIN CERTIFICATE-----\nMIIDkTCCAnkCCQD7oPxudsyOjTANBgkqhkiG9w0BAQsFADCBjjELMAkGA1UEBhMC\nVVMxDzANBgNVBAgMBk9yZWdvbjERMA8GA1UEBwwIUG9ydGxhbmQxDDAKBgNVBAoM\nA1hZWjELMAkGA1UECwwCSVQxIjAgBgNVBAMMGVhZWiBDRVJUSUZJQ0FURSBBVVRI\nT1JJVFkxHDAaBgkqhkiG9w0BCQEWDW5vbmVAbm9uZS5jb20wHhcNMTkwOTEyMDkx\nMzQwWhcNMjEwMTI0MDkxMzQwWjCBhTEPMA0GA1UEBwwGQXVzdGluMRQwEgYDVQQD\nDAt4eC54eC54eC54eDELMAkGA1UEBhMCVVMxDTALBgQrDgMCDANSU0ExHTAbBgNV\nHSUMFFNlcnZlckF1dGhlbnRpY2F0aW9uMRQwEgYDVQQKDAtBQkMgTGltaXRlZDEL\nMAkGA1UECAwCQVUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDv46hd\nGYAjzlb/mkFiMLkR1n9q2s+mQjGNPixcA1ktebr++R9H8EDF3mzwNiuJ8+N1+8lG\n/fdwA9Pr6l6j+3v3eF0HHsLDDOqWPdzN91um8an3QjsFDU68oKj80Oap5Ob7mOmF\nil3xm8qYE0I58dXSyvf90w8cwTXpq6cMQcUnPULNekbmRKzNFhvBxmtcLuu+ZKLx\nQFfwFigpbPGUAZ05iH2PmT8tU1C4oUmOoh96xgnx9qOCwmvxuPzWj5s7O8b7MCm+\n34CTwHx+pru8RPiNvWh4O5KL0PX9drH7arHe8ichA45nPc4JWPE0tkxY4D4/zrPn\n17/piRc6D9CRcbi5AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJ+xLxyfBBpRXov/\noRVMyJSWRSSITfzvcZVMcbDXAWR591rdYPNmpmpuDSdtynIvJe33H9FyXRI1UMnw\n5BYpJrVjxxyEvIyoxbJSkLxjkO6TUJNI2w7wBJeUDpwdYWuwmUc6UfO5c5LGSb4z\nzbvfEdSsW+3pHuFopuhU8d/SR14rjZiGpU2MBF+/yEyUXmQ5jIU69UwvIvbch0Zy\naquTL4O3aL1Lc9ACVUsQ7mTUS+niduIsZLvvI+OWMShRo8CEUJl9BKijQJhwvUVf\nUBNa1pVzonLxdt3eRTv93X4cu5ole6wO2DA19PWnlt/16XYw61/5naYckslQTRdc\nGvsIpb0=\n-----END CERTIFICATE-----",
134609448f2SRahul Maheshwari    "CertificateType": "PEM",
135609448f2SRahul Maheshwari    "CertificateUri":
136609448f2SRahul Maheshwari    {
137*4d430283Sganesanb        "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/NetworkProtocol/HTTPS/Certificates/1"
138609448f2SRahul Maheshwari    }
139609448f2SRahul Maheshwari}
140609448f2SRahul Maheshwari```
141609448f2SRahul Maheshwari
142609448f2SRahul Maheshwari**Install CA signed server certificate**
143609448f2SRahul Maheshwari
14412e33526SPatrick WilliamsReplace server certificate using JSON file (above) with CA signed certificate
14512e33526SPatrick Williamsdetails (certificate.json).
146609448f2SRahul Maheshwari
147609448f2SRahul Maheshwari```
148609448f2SRahul Maheshwari$ curl -c cjar -b cjar -k -H "X-Auth-Token: $bmc_token" -X POST https://${BMC_IP}/redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate/ -d @certificate.json
149609448f2SRahul Maheshwari{
150609448f2SRahul Maheshwari  "@odata.context": "/redfish/v1/$metadata#Certificate.Certificate",
151*4d430283Sganesanb  "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/NetworkProtocol/HTTPS/Certificates/1",
152609448f2SRahul Maheshwari  "@odata.type": "#Certificate.v1_0_0.Certificate",
1532600f860SRahul Maheshwari  "CertificateString": "-----BEGIN CERTIFICATE-----\nMIIDkTCCAnkCCQD7oPxudsyOjTANBgkqhkiG9w0BAQsFADCBjjELMAkGA1UEBhMC\nVVMxDzANBgNVBAgMBk9yZWdvbjERMA8GA1UEBwwIUG9ydGxhbmQxDDAKBgNVBAoM\nA1hZWjELMAkGA1UECwwCSVQxIjAgBgNVBAMMGVhZWiBDRVJUSUZJQ0FURSBBVVRI\nT1JJVFkxHDAaBgkqhkiG9w0BCQEWDW5vbmVAbm9uZS5jb20wHhcNMTkwOTEyMDkx\nMzQwWhcNMjEwMTI0MDkxMzQwWjCBhTEPMA0GA1UEBwwGQXVzdGluMRQwEgYDVQQD\nDAt4eC54eC54eC54eDELMAkGA1UEBhMCVVMxDTALBgQrDgMCDANSU0ExHTAbBgNV\nHSUMFFNlcnZlckF1dGhlbnRpY2F0aW9uMRQwEgYDVQQKDAtBQkMgTGltaXRlZDEL\nMAkGA1UECAwCQVUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDv46hd\nGYAjzlb/mkFiMLkR1n9q2s+mQjGNPixcA1ktebr++R9H8EDF3mzwNiuJ8+N1+8lG\n/fdwA9Pr6l6j+3v3eF0HHsLDDOqWPdzN91um8an3QjsFDU68oKj80Oap5Ob7mOmF\nil3xm8qYE0I58dXSyvf90w8cwTXpq6cMQcUnPULNekbmRKzNFhvBxmtcLuu+ZKLx\nQFfwFigpbPGUAZ05iH2PmT8tU1C4oUmOoh96xgnx9qOCwmvxuPzWj5s7O8b7MCm+\n34CTwHx+pru8RPiNvWh4O5KL0PX9drH7arHe8ichA45nPc4JWPE0tkxY4D4/zrPn\n17/piRc6D9CRcbi5AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJ+xLxyfBBpRXov/\noRVMyJSWRSSITfzvcZVMcbDXAWR591rdYPNmpmpuDSdtynIvJe33H9FyXRI1UMnw\n5BYpJrVjxxyEvIyoxbJSkLxjkO6TUJNI2w7wBJeUDpwdYWuwmUc6UfO5c5LGSb4z\nzbvfEdSsW+3pHuFopuhU8d/SR14rjZiGpU2MBF+/yEyUXmQ5jIU69UwvIvbch0Zy\naquTL4O3aL1Lc9ACVUsQ7mTUS+niduIsZLvvI+OWMShRo8CEUJl9BKijQJhwvUVf\nUBNa1pVzonLxdt3eRTv93X4cu5ole6wO2DA19PWnlt/16XYw61/5naYckslQTRdc\nGvsIpb0=\n-----END CERTIFICATE-----\n",
154609448f2SRahul Maheshwari  "Description": "HTTPS certificate",
155609448f2SRahul Maheshwari  "Id": "1",
156609448f2SRahul Maheshwari  "Issuer": {
1572600f860SRahul Maheshwari    "City": "Portland",
1582600f860SRahul Maheshwari    "CommonName": "XYZ CERTIFICATE AUTHORITY",
1592600f860SRahul Maheshwari    "Country": "US",
1602600f860SRahul Maheshwari    "Organization": "XYZ",
161609448f2SRahul Maheshwari    "OrganizationalUnit": "IT",
1622600f860SRahul Maheshwari    "State": "Oregon"
163609448f2SRahul Maheshwari  },
164609448f2SRahul Maheshwari  "KeyUsage": [],
165609448f2SRahul Maheshwari  "Name": "HTTPS certificate",
166609448f2SRahul Maheshwari  "Subject": {
167609448f2SRahul Maheshwari    "City": "Austin",
1682600f860SRahul Maheshwari    "CommonName": "xx.xx.xx.xx",
169609448f2SRahul Maheshwari    "Country": "US",
1702600f860SRahul Maheshwari    "Organization": "ABC Limited",
171609448f2SRahul Maheshwari    "State": "AU"
172609448f2SRahul Maheshwari  },
1732600f860SRahul Maheshwari  "ValidNotAfter": "2021-01-23T21:13:40+00:00",
1742600f860SRahul Maheshwari  "ValidNotBefore": "2019-09-11T21:13:40+00:00"
175609448f2SRahul Maheshwari}
176609448f2SRahul Maheshwari```
177