{"id":5305,"date":"2018-07-09T16:30:57","date_gmt":"2018-07-09T12:30:57","guid":{"rendered":"https:\/\/www.howtoforge.com\/tutorial\/integration-of-cfssl-with-the-lemur-certificate-manager\/"},"modified":"2018-07-09T16:30:57","modified_gmt":"2018-07-09T12:30:57","slug":"integration-of-cfssl-with-the-lemur-certificate-manager","status":"publish","type":"post","link":"https:\/\/afaghhosting.net\/blog\/integration-of-cfssl-with-the-lemur-certificate-manager\/","title":{"rendered":"Integration of CFSSL with the Lemur Certificate Manager"},"content":{"rendered":"<p>In the\u00a0<a href=\"https:\/\/www.howtoforge.com\/tutorial\/installation-and-usage-of-lemur-certificate-manager-on-ubuntu\/\" target=\"_blank\" title=\"lemur installation and Usage\" rel=\"noopener noreferrer\">previous article on Lemur<\/a> certificate manager, we have not used any third party root Certification Authority (CA) for the client certificates. Therefore, in this tutorial, PKI will be set up using CFSSL (Cloudflare&#8217;s SSL) and integrated with the Lemur project. Currently, there is no document which helps the user to integrate CFSSL with the Lemur setup.\u00a0<\/p>\n<p>Note: As we are using CFSSL as a 3rd party root authority, so first we have to setup it on a separate machine ( however we set up it on the same Lemur box)\u00a0and after that change the lemur conf file to use CFSSL for the signing the certificate.\u00a0<\/p>\n<h2 id=\"installing-cfssl\">Installing CFSSL<\/h2>\n<p>The CloudFlare SSL\u00a0 is implemented using &#8220;Go&#8221; programming language so installation of &#8220;go&#8221; package is required on the machine. The following command will install the required package on the machine.<\/p>\n<h3 id=\"-install-gonbsp\">1. Install Go\u00a0<\/h3>\n<p>The Go package will be installed from source code.\u00a0<\/p>\n<p class=\"command\"><dprompt>wget https:\/\/dl.google.com\/go\/go1.10.1.linux-amd64.tar.gz\u00a0<\/dprompt><\/p>\n<p><span><a class=\"fancybox\" id=\"img-download-sourcecode\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/download-sourcecode.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager.png\" alt=\"Install Go\" width=\"550\" height=\"141\" title=\"\"><\/a><\/span><\/p>\n<p><span>Extract the downloaded archive and install it to the desired location on the system. We are installing it under \/usr\/local directory. You can also put this under the desired location on the system.<\/span><\/p>\n<p class=\"command\"><dprompt>tar -xzvf go1.10.1.linux-amd64.tar.gz<\/dprompt><\/p>\n<p class=\"command\"><dprompt><dprompt>mv go \/usr\/local<\/dprompt><\/dprompt><\/p>\n<p><a class=\"fancybox\" id=\"img-extract\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/extract.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-1.png\" alt=\"Unpack go source files\" width=\"550\" height=\"137\" title=\"\"><\/a><\/p>\n<p>After the installation of the Go package, it is also required to set an environment variable for the Go binary. (You can add it in the user profile so make it permanent setting).\u00a0<span>Commonly you need to set 3 environment variables as\u00a0<\/span><strong>GOROOT<\/strong><span>,<span>\u00a0<\/span><\/span><strong>GOPATH<\/strong><span><span>\u00a0<\/span>and<span>\u00a0<\/span><\/span><strong>PATH<\/strong><span>.<\/span><\/p>\n<p><strong>GOROOT<\/strong><span>\u00a0<\/span>is the location where Go package is installed on your system.<\/p>\n<p class=\"command\"><dprompt>export GOROOT=\/usr\/local\/go<\/dprompt><\/p>\n<p><strong>GOPATH<\/strong><span><span>\u00a0<\/span>is the location of your work directory.<\/span><\/p>\n<p class=\"command\">export GOPATH=$HOME\/go<\/p>\n<p>Now set the<span>\u00a0<\/span><strong>PATH<\/strong><span>\u00a0<\/span>variable to access go binary system-wide.<\/p>\n<p class=\"command\">export PATH=$PATH:$GOROOT\/bin:$GOPATH\/bin<\/p>\n<p><a class=\"fancybox\" id=\"img-set_environment2\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/set_environment2.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-2.png\" alt=\"Set up the Go build environment\" width=\"550\" height=\"235\" title=\"\"><\/a><\/p>\n<h3 id=\"-test-go-command\">2. Test Go command<\/h3>\n<p>Now type &#8220;go&#8221; command in the terminal. It will show the output like the following screenshot.<\/p>\n<pre>go&#13;\n<\/pre>\n<p><a class=\"fancybox\" id=\"img-test_go_command1\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/test_go_command1.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-3.png\" alt=\"Test the Go command\" width=\"550\" height=\"381\" title=\"\"><\/a><\/p>\n<h3 id=\"-install-cfssl\">3. Install CFSSL<\/h3>\n<p>We have to install CFSSL on this Ubuntu platform. When the required environment variables for GO are set properly, then CFSSL installation process will be easy.<\/p>\n<p>a. The following command will download the CFSSL utility and build it in the $GOPATH\/bin\/ path.<\/p>\n<p class=\"command\">go get -u github.com\/cloudflare\/cfssl\/cmd\/cfssl<\/p>\n<p>b. The following command will install the json plugin of CFSSL package.It is required because CFSSL handles JSON requests.<\/p>\n<p class=\"command\">\u00a0go get -u github.com\/cloudflare\/cfssl\/cmd\/cfssljson<\/p>\n<p>c. simply install all of the programs of CFSSL using below given command. This command will download, build, and install all of the utility programs (including cfssl, cfssljson, and mkbundle among others) into the $GOPATH\/bin\/ directory.<\/p>\n<p class=\"command\">go get -u github.com\/cloudflare\/cfssl\/cmd\/&#8230;<\/p>\n<h2><a class=\"fancybox\" id=\"img-downloaded_cfssl\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/downloaded_cfssl.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-4.png\" alt=\"Install CFSSL\" width=\"550\" height=\"188\" title=\"\"><\/a><\/h2>\n<p>As shown below, Run &#8220;cfssl&#8221; command in the terminal and it will show all the operation supported by the CFSSL PKI.<\/p>\n<p><a class=\"fancybox\" id=\"img-cfssl\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/cfssl.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-5.png\" alt=\"Run cfssl command\" width=\"550\" height=\"304\" title=\"\"><\/a><\/p>\n<h2 id=\"cfssls-pki-setup\">CFSSL&#8217;s PKI Setup<\/h2>\n<p>Now, cfssl application will be used to setup PKI for the Lemur project.\u00a0 The configuration files &#8220;CSR_configuration&#8221; and &#8220;signing_configuration&#8221; are important in CFSSL setup. The &#8220;CSR&#8221; configuration file contains the configuration for the key pair you\u2019re about to create and the &#8220;Signing&#8221; configuration as the name goes, sets up the configuration rules.<\/p>\n<h3 id=\"create-root-ca\">Create ROOT CA<\/h3>\n<p>For the root CA, check the following\u00a0CSR configuration file (which we\u2019ll call\u00a0csr_ROOT_CA.json):<\/p>\n<ul>\n<li>csr_ROOT_CA.json<\/li>\n<\/ul>\n<pre> {&#13; \"CN\": \"MY-ROOT-CA\",&#13; \"key\": {&#13; \"algo\": \"ecdsa\",&#13; \"size\": 256&#13; },&#13; \"names\": [&#13; {&#13; \"C\": \"UK\",&#13; \"L\": \"London\",&#13; \"O\": \"My Organisation\",&#13; \"OU\": \"My Organisational Unit Inside My Organisation\"&#13; }&#13; ],&#13; \"ca\": {&#13; \"expiry\": \"262800h\"&#13; }&#13;\n}<\/pre>\n<p><a class=\"fancybox\" id=\"img-rootca\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/rootca.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager.jpg\" alt=\"CFSSL&#039;s PKI Setup\" width=\"515\" height=\"344\" title=\"\"><\/a><\/p>\n<p>A brief explanation of the different fields is given below.<\/p>\n<ul>\n<li>The configuration file follows the X.509 naming scheme, so the following fields are required:\n<ul>\n<li>CN (Common Name) \u2013 The name of the entity. On the Root CA case, it\u2019s the Root CA Name;<\/li>\n<li>C \u00a0(Country)<\/li>\n<li>L (Location)<\/li>\n<li>O (Organisation)<\/li>\n<li>OU (Organisational Unit)<\/li>\n<\/ul>\n<\/li>\n<li>Now, a number of specific fields are specific to CFSSL:\n<ul>\n<li>KEY \u2013 Defines the keys characteristics:\n<ul>\n<li>Algo \u2013 Specifies the algorithm. Can be \u2018rsa\u2019 or \u2018ecdsa\u2019, for RSA or ECDSA algorithms, respectively. Now, ECDSA is always recommended if legacy devices are not relevant, but this only applies to devices less than two or three years old. RSA shall be used otherwise.<\/li>\n<li>size \u2013 Specifies the key size. 256 shall be used for ecdsa key. For RSA keys, 2048 or 4096 are the recommended values.<\/li>\n<\/ul>\n<\/li>\n<li>ca \u2013 Defines the CA characteristics and in this case the key validity, in hours, yes, in hours. In this case it\u2019s 30 years (24x356x30), as the root authority shall last as long as you foreseen the security of the root key.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Now, run the following command to actually create the Root CA for the Lemur.<\/p>\n<p class=\"command\">cfssl gencert -initca csr_ROOT_CA.json | cfssljson -bare root_ca<\/p>\n<p><a class=\"fancybox\" id=\"img-cacommand\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/cacommand.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-1.jpg\" alt=\" create the Root CA for the Lemur\" width=\"550\" height=\"168\" title=\"\"><\/a><\/p>\n<p>The above command will create the following files on the machine.<\/p>\n<ul>\n<li>root_ca.csr \u2013 The root ca certificate sign request, which doesn\u2019t make sense for the root ca, and therefore will never be used. As the root CA is self-signed.<\/li>\n<li>root_ca.pem \u2013 The Root CA certificate. This is the file you and to distribute as much as possible.<\/li>\n<li>root_ca.key \u2013 This is the root CA Key. Keep this file safe and secured, as if your life depends on it. For a public Root CA this is actually\u00a0the truth.<\/li>\n<\/ul>\n<p>The Root CA is self-signed, so move on to the next step for the generation of an intermediate CA.<\/p>\n<h3 id=\"intermediate-ca\">Intermediate CA<\/h3>\n<p>The generation of Intermediate CA is not mandatory but corresponds to a best practice. The end goal of having an intermediate CA, is to have an intermediate step in terms of security. Usually. the Root CA key is kept in an offline machine, and only used when you need to sign an intermediate CA certificate.<\/p>\n<p>The configuration file &#8220;csr_INTERMEDIATE_CA.json&#8221; is required to create an intermediate CA.<\/p>\n<ul>\n<li><span>csr_INTERMEDIATE_CA.json<\/span>\u00a0\u2013 The certificate sign request for the Intermediate CA<\/li>\n<\/ul>\n<pre>{&#13; \"CN\": \"My-Intermediate-CA\",&#13; \"key\": {&#13; \"algo\": \"ecdsa\",&#13; \"size\": 256&#13; },&#13; \"names\": [&#13; {&#13; \"C\": \"UK\",&#13; \"L\": \"London\",&#13; \"O\": \"My Organisation\",&#13; \"OU\": \"My Organisational Unit Inside My Organisation\"&#13; }&#13; ],&#13; \"ca\": {&#13; \"expiry\": \"42720h\"&#13; }&#13;\n}<\/pre>\n<p><a class=\"fancybox\" id=\"img-intermediate1\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/intermediate1.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-2.jpg\" alt=\"Intermediate CA\" width=\"550\" height=\"330\" title=\"\"><\/a><\/p>\n<p>The &#8220;root_to_intermediate_ca.json&#8221; file contains the Root CA signing configuration.<\/p>\n<pre>{ <br\/>\"signing\": {&#13; \"default\": {&#13; \"usages\": [\"digital signature\",\"cert sign\",\"crl sign\",\"signing\"],&#13; \"expiry\": \"262800h\",&#13; \"ca_constraint\": {\"is_ca\": true, \"max_path_len\":0, \"max_path_len_zero\": true}&#13; }&#13; }&#13;\n}<\/pre>\n<p><a class=\"fancybox\" id=\"img-root-to_intermediate\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/root-to_intermediate.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-3.jpg\" alt=\"Setup intermediate CA\" width=\"550\" height=\"227\" title=\"\"><\/a><\/p>\n<p>This file contains the most relevant parameters for a certificate.<\/p>\n<ul>\n<li>usages \u2013 Which usages are allowed to be performed by the certificate being signed. Options supported by CFSSL are the following:\n<ul>\n<li>\u201cdigital signature\u201d,<\/li>\n<li>\u201ccert sign\u201d,<\/li>\n<li>\u201ccrl sign\u201d,<\/li>\n<li>\u201csigning\u201d<\/li>\n<li>etc<\/li>\n<\/ul>\n<\/li>\n<li>is_ca \u2013 this field is only applicable to generate intermedia CAs certificates, and allows the generated certificate to sign other certificates. If you leave this field on an end device certificate it will be rejected by most common browsers and operative systems.<\/li>\n<\/ul>\n<p>The following command will create an Intermediate CA against the above-mentioned configuration.<\/p>\n<p class=\"command\">cfssl gencert -initca csr_INTERMEDIATE_CA.json | cfssljson -bare intermediate_ca<\/p>\n<p><a class=\"fancybox\" id=\"img-intermediate.CAJPG_\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/intermediate.CAJPG_.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-4.jpg\" alt=\"create an Intermediate CA against the above-mentioned configuration\" width=\"550\" height=\"141\" title=\"\"><\/a><\/p>\n<p>The above command will create the following files of the Intermediate CA.<\/p>\n<ul>\n<li>intermediate_ca.csr \u2013 The\u00a0Intermediate CA\u00a0certificate sign request.<\/li>\n<li>intermediate_ca.pem \u2013 The Intermediate CA\u00a0certificate, not signed by anyone, and therefore useless.<\/li>\n<li>intermediate_ca.key \u2013 This is the Intermediate\u00a0CA Key. Keep this file safe and secured.<\/li>\n<\/ul>\n<p>The following command shows the signing of Intermediate CA certificate by the Root CA.<\/p>\n<p class=\"command\">cfssl sign -ca root_ca.pem -ca-key root_ca-key.pem -config root_to_intermediate_ca.json intermediate_ca.csr | cfssljson -bare intermediate_ca<\/p>\n<p><a class=\"fancybox\" id=\"img-signedintermediateCA\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/signedintermediateCA.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-5.jpg\" alt=\"Create intermediate CA files\" width=\"550\" height=\"116\" title=\"\"><\/a><\/p>\n<p>The above command will sign the intermediate_ca.pem file. Now the setting of the Root and Intermediate CA is complete. It is important to keep Root CA Keys and configurations files safe and secure. Next step is to create a certificate for client device or customer. Here, we will integrate the CFSSL setup with the Lemur project and the client&#8217;s certificate will be generated.\u00a0<\/p>\n<h3 id=\"run-cfssls-pki\">Run CFSSL&#8217;s PKI<\/h3>\n<p>To run the CFSSL based PKI, go inside the certs directory and run following command.<\/p>\n<p class=\"command\">cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888<\/p>\n<p>The output of the above command will be following.\u00a0<\/p>\n<pre><a href=\"https:\/\/www.howtoforge.com\/cdn-cgi\/l\/email-protection\" class=\"__cf_email__\" data-cfemail=\"d6a4b9b9a296a2b3a5a2fba0bb\" target=\"_blank\" rel=\"noopener\">[email\u00a0protected]<\/a>:\/home\/john\/Desktop\/certs# cfssl serve -address 192.168.10.151 -ca root_ca.pem -ca-key root_ca-key.pem -port 8888<br\/>2018\/05\/20 16:35:18 [INFO] Initializing signer<br\/>2018\/05\/20 16:35:19 [WARNING] couldn't initialize ocsp signer: open : no such file or directory<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/scaninfo' is enabled<br\/>2018\/05\/20 16:35:19 [WARNING] endpoint 'ocspsign' is disabled: signer not initialized<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/' is enabled<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/info' is enabled<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/gencrl' is enabled<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/scan' is enabled<br\/>2018\/05\/20 16:35:19 [WARNING] endpoint 'crl' is disabled: cert db not configured (missing -db-config)<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/certinfo' is enabled<br\/>2018\/05\/20 16:35:19 [WARNING] endpoint 'revoke' is disabled: cert db not configured (missing -db-config)<br\/>2018\/05\/20 16:35:19 [INFO] bundler API ready<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/bundle' is enabled<br\/>2018\/05\/20 16:35:19 [INFO] setting up key \/ CSR generator<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/newkey' is enabled<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/init_ca' is enabled<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/sign' is enabled<br\/>2018\/05\/20 16:35:19 [WARNING] endpoint 'authsign' is disabled: {\"code\":5200,\"message\":\"Invalid or unknown policy\"}<br\/>2018\/05\/20 16:35:19 [INFO] endpoint '\/api\/v1\/cfssl\/newcert' is enabled<br\/>2018\/05\/20 16:35:19 [INFO] Handler set up complete.<br\/>2018\/05\/20 16:35:19 [INFO] Now listening on 192.168.10.151:8888<\/pre>\n<p><a class=\"fancybox\" id=\"img-cfsslrunning\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/cfsslrunning.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-6.jpg\" alt=\"Run CFSSL PKI\" width=\"550\" height=\"197\" title=\"\"><\/a><\/p>\n<p>The ip address of the machine is <strong>192.168.10.151<\/strong> and port is <strong>8888<\/strong>. Allow this port in the firewall to use the CFSSL.<\/p>\n<p>NOTE: The following command is just guiding to use the cfssl utility.<\/p>\n<pre>{ cfssl serve [-address address] [-ca cert] [-ca-bundle bundle] \\<br\/>[-ca-key key] [-int-bundle bundle] [-int-dir dir] [-port port] \\<br\/>[-metadata file] [-remote remote_host] [-config config] \\<br\/>[-responder cert] [-responder-key key] [-db-config db-config] }<\/pre>\n<p>Now, the configuration of the CFSSL is complete and it is running on the machine. The next step is the integration of CFSSL with Lemur.<\/p>\n<h2 id=\"lemur-configuration-for-cfssls-pki\">Lemur configuration for CFSSL&#8217;s PKI<\/h2>\n<p>Now, the configuration file &#8220;lemur.conf.py&#8221; of the Lemur will be modified ( such as URL, ROOT, and Intermediate keys). The configuration file will include the information about the CFSSL. The path of the lemur configuration file is\u00a0 &#8220;\/home\/lemur\/.lemur\/lemur.conf.py&#8221;.<\/p>\n<pre>CFSSL_URL =\"http:\/\/192.168.10.151:8888\"<\/pre>\n<pre>CFSSL_ROOT =\"\"\"-----BEGIN CERTIFICATE-----<br\/>MIICcjCCAhegAwIBAgIUahfYPc4RpK92G1ZHhu3q9URvf+8wCgYIKoZIzj0EAwIw<br\/>9UmEM4IEd2j8\/w4WdTYaBE5EzwIhAN3oW9iAmjcyzC\/7BPIY\/Sr+twig\/+XwnQ8T<br\/>hKXP2OHd<br\/>-----END CERTIFICATE-----\"\"\"<\/pre>\n<pre>CFSSL_INTERMEDIATE =\"\"\"-----BEGIN CERTIFICATE-----<br\/>MIICfDCCAiKgAwIBAgIUEeb8Duel8wySG61vCM2UEUD15XQwCgYIKoZIzj0EAwIw<br\/>qM9lE82tku\/b6SMxAlBByQ==<br\/>-----END CERTIFICATE-----\"\"\"<\/pre>\n<p><a class=\"fancybox\" id=\"img-cfssl_lemurconf\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/cfssl_lemurconf.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-7.jpg\" alt=\"Lemur configuration\" width=\"550\" height=\"337\" title=\"\"><\/a><\/p>\n<p>Now, run the &#8220;lemur start&#8221; command to use the lemur.conf.py with CFSSL setting.<\/p>\n<h2 id=\"create-certificates-using-cfssl\">Create certificates using CFSSL<\/h2>\n<p>By following our <a href=\"https:\/\/www.howtoforge.com\/tutorial\/installation-and-usage-of-lemur-certificate-manager-on-ubuntu\/\" target=\"_blank\" title=\"Lemur installation and Uage\" rel=\"noopener noreferrer\">previous article <\/a>on the Lemur, access the dashboard to create client Certificates using Root CA of CFSSL. First of all, create new Certification Authority and select plugin CFSSL as Root CA.\u00a0<\/p>\n<p>1. setting different parameters of the new authority.<\/p>\n<p><a class=\"fancybox\" id=\"img-rootcalemur\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/rootcalemur.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-8.jpg\" alt=\"Create new authority\" width=\"550\" height=\"386\" title=\"\"><\/a><\/p>\n<p>2. select newly setup CFSSL Plugin as a Root CA.<\/p>\n<p><a class=\"fancybox\" id=\"img-selectCFSSL\" href=\"https:\/\/www.howtoforge.com\/images\/integration_of_cfssl_with_the_lemur_certificate_manager_\/big\/selectCFSSL.JPG\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-9.jpg\" alt=\"setup CFSSL Plugin as a Root CA\" width=\"550\" height=\"337\" title=\"\"><\/a><\/p>\n<p>After setting up the new Certification Authority in the Lemur, the\u00a0next step is to generate a\u00a0certificate using the newly setup CFSSL plugin.<\/p>\n<div>\n<p><b>Share this page:<\/b><\/p>\n<p>\n<a href=\"https:\/\/www.facebook.com\/sharer.php?u=https%3A%2F%2Fwww.howtoforge.com%2Ftutorial%2Fintegration-of-cfssl-with-the-lemur-certificate-manager%2F\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-6.png\" height=\"20\" alt=\"\" title=\"\"><\/a><br \/>\n<a href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fwww.howtoforge.com%2Ftutorial%2Fintegration-of-cfssl-with-the-lemur-certificate-manager%2F&amp;text=Integration+of+CFSSL+with+the+Lemur+Certificate+Manager+&amp;via=howtoforgecom&amp;related=howtoforgecom\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-7.png\" height=\"20\" alt=\"\" title=\"\"><\/a><br \/>\n<a href=\"https:\/\/twitter.com\/howtoforgecom\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-8.png\" height=\"20\" alt=\"\" title=\"\"><\/a><br \/>\n<a href=\"https:\/\/plus.google.com\/share?url=https%3A%2F%2Fwww.howtoforge.com%2Ftutorial%2Fintegration-of-cfssl-with-the-lemur-certificate-manager%2F\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/afaghhosting.net\/blog\/wp-content\/uploads\/2018\/07\/integration-of-cfssl-with-the-lemur-certificate-manager-9.png\" height=\"20\" alt=\"\" title=\"\"><\/a>\n<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In the\u00a0previous article on Lemur certificate manager, we have not used any third party root Certification Authority (CA) for the client certificates. Therefore, in this tutorial, PKI will be set up using CFSSL (Cloudflare&#8217;s SSL) and integrated with the Lemur project. Currently, there is no document which helps the user to integrate CFSSL with the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"class_list":["post-5305","post","type-post","status-publish","format-standard","hentry","category-36"],"_links":{"self":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/5305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/comments?post=5305"}],"version-history":[{"count":0,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/5305\/revisions"}],"wp:attachment":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/media?parent=5305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/categories?post=5305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/tags?post=5305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}