Generating SSL certs with ACF: Difference between revisions

From Alpine Linux
m (Cleanup / reorg)
Line 1: Line 1:
You are in need of creating certificate for remote persons. You might use something like openvpn or racoon for your VPN services. But wouldn't it be nice to have some sort of way to manage and view all the certs you have given to everyone? Revoke the certs? Review the certificate before you issue it?
You need to create certificates for servers or remote persons. You might need an SSL cert for your web server running lighttpd or mini_httpd. You might use something like openvpn or racoon for your VPN services. Wouldn't it be nice to have some way to manage and view all the certs you have given to everyone? Revoke the certs? Review the certificate before you issue it?
Alpine, via ACF, has a nice web interface to use for this sort of job...
Alpine, via ACF, has a nice web interface to use for this sort of job...


Line 38: Line 38:
Click the Status tab. Input values for the input boxes to generate a CA and click Generate.
Click the Status tab. Input values for the input boxes to generate a CA and click Generate.


=== Generate a certificate with ACF ===
== Generate a certificate with ACF ==
==== Request Form ====
=== Request Form ===
Provided Fields:
Provided Fields:
* Country Name (2 letter abbreviation)
* Country Name (2 letter abbreviation)
Line 61: Line 61:
Once this form has been filled out and the password entered click submit.
Once this form has been filled out and the password entered click submit.


==== View ====
=== View ===
Go to the View tab after you have the request form submitted. The view tab will show you pending requests for certificates. Also available from this tab are already approved requests (generated certs), revoked certs, and the CRL.
Go to the View tab after you have the request form submitted. The view tab will show you pending requests for certificates. Also available from this tab are already approved requests (generated certs), revoked certs, and the CRL.


Line 68: Line 68:
The file that will be generated can be downloaded from the ACF. Use the command lines below to extract the pkcs12 file into its part to begin using it.
The file that will be generated can be downloaded from the ACF. Use the command lines below to extract the pkcs12 file into its part to begin using it.


==== Extract PFX certificate ====
=== Extract PFX certificate ===
To get the CA CERT
To get the CA CERT


Line 76: Line 76:


{{Cmd|openssl pkcs12 -in PFXFILE -nocerts -nodes -out mykey.pem}}
{{Cmd|openssl pkcs12 -in PFXFILE -nocerts -nodes -out mykey.pem}}
Since this file contains the key without passsword protection, make sure to set restrictive permissions on this file.


To get the Certificate
To get the Certificate
Line 81: Line 82:
{{Cmd|openssl pkcs12 -in PFXFILE -nokeys -clcerts -out mycert.pem}}
{{Cmd|openssl pkcs12 -in PFXFILE -nokeys -clcerts -out mycert.pem}}


Display the cert or key readable/text format
To get the Certificate and Private key in a single file (For lighttpd or mini_httpd for instance)


{{Cmd|openssl x509 -in mycert.pem -noout -text}}
{{Cmd|openssl pkcs12 -in PFXFILE -nodes -out server.pem}}
Since this file contains the key without passsword protection, make sure to set restrictive permissions on this file.


To get the CA Chain (For lighttpd for instance)


To get the CA Chain in one file, and  Certificate and Private key in another:(For lighttpd for instance)
{{Cmd|openssl pkcs12 -in PFXFILE -nokeys -cacerts -chain -out ca-certs.pem}}


{{Cmd|openssl pkcs12 -in PFXFILE -nodes -out server.pem
Display the cert or key readable/text format
openssl pkcs12 -in PFXFILE -nokeys -cacerts -chain -out ca-certs.pem}}


Since this file contains the key without passsword protection, make sure to set restrictive permissions on this file.
{{Cmd|openssl x509 -in mycert.pem -noout -text}}


====OpenSSL command line to create your CA ====
==Extras==
===OpenSSL command line to create your CA ===
The following command will need a password. Make sure to remember this.
The following command will need a password. Make sure to remember this.



Revision as of 19:59, 30 January 2015

You need to create certificates for servers or remote persons. You might need an SSL cert for your web server running lighttpd or mini_httpd. You might use something like openvpn or racoon for your VPN services. Wouldn't it be nice to have some way to manage and view all the certs you have given to everyone? Revoke the certs? Review the certificate before you issue it? Alpine, via ACF, has a nice web interface to use for this sort of job...

Installation Process

This will somewhat guide you through the process of creating this type of server. It is suggested to not host this on your VPN gateway, but use another machine to generate your certificates.

Install Alpine

Link below to the standard document.

Installing_Alpine

Install and Configure ACF

Run the following command: This will install the web front end to Alpine Linux, called ACF.

/sbin/setup-acf

Install acf-openssl

apk add acf-openssl

Browse to your computer https://ipaddr/

Login as root.

Click on the User Management tab and create yourself an account.

Acf-openssl

From the navigation bar on the left, under the Applications section, click the Certificate Authority link.

If you already have a CA that you would like to have the web interface manage you can upload it from the Status page (as a pfx).

From the Status tab, Click Configure(to remove most of the error messages).

If you do not have a CA, To generate a new CA certificate: Click the Edit Defaults tab. Input the Items that will be needed for the CA and any other certs generated from it then Click Save. Click the Status tab. Input values for the input boxes to generate a CA and click Generate.

Generate a certificate with ACF

Request Form

Provided Fields:

  • Country Name (2 letter abbreviation)
  • Locality Name (e.g. city)
  • Organization Name
  • Common Name (eg, the certificate CN)
  • Email Address
  • Multiple Organizational Unit Name (eg, division)
  • Certificate Type

A box has been set aside for adding Additional x509 Extensions formatted the same as if you were to fill out a section directly in openssl.cnf. Section would be [v3_req]

You could put in here:

  • subjectAltName ="IP:192.168.1.1"
  • subjectAltName ="DNS:192.168.1.10"

Here is also where you would specify the CRL / OCSP distribution point, from where clients can query information:

Once this form has been filled out and the password entered click submit.

View

Go to the View tab after you have the request form submitted. The view tab will show you pending requests for certificates. Also available from this tab are already approved requests (generated certs), revoked certs, and the CRL.

For a Pending request, make sure to review the cert before approving it. Once you have verified that all the information is correct, with no mis-types or spelling mistakes, Approve the request.

The file that will be generated can be downloaded from the ACF. Use the command lines below to extract the pkcs12 file into its part to begin using it.

Extract PFX certificate

To get the CA CERT

openssl pkcs12 -in PFXFILE -cacerts -nokeys -out cacert.pem

To get the Private Key

openssl pkcs12 -in PFXFILE -nocerts -nodes -out mykey.pem

Since this file contains the key without passsword protection, make sure to set restrictive permissions on this file.

To get the Certificate

openssl pkcs12 -in PFXFILE -nokeys -clcerts -out mycert.pem

To get the Certificate and Private key in a single file (For lighttpd or mini_httpd for instance)

openssl pkcs12 -in PFXFILE -nodes -out server.pem

Since this file contains the key without passsword protection, make sure to set restrictive permissions on this file.

To get the CA Chain (For lighttpd for instance)

openssl pkcs12 -in PFXFILE -nokeys -cacerts -chain -out ca-certs.pem

Display the cert or key readable/text format

openssl x509 -in mycert.pem -noout -text

Extras

OpenSSL command line to create your CA

The following command will need a password. Make sure to remember this.

openssl genrsa -des3 -out server.key 2048

openssl req -new -key server.key -out server.csr

openssl rsa -in server.key. -out server.pem

openssl x509 -req -days 365 -in server.csr -signkey server.pem -out cacert.pem

mv server.pem /etc/ssl/private; mv cacert.pem /etc/ssl/

Edits to /etc/ssl/openssl-ca-acf.cnf

Via the expert tab on ACF edit the openssl-ca-acf.cnf file. Something like subjectAltName can be added to be used by the certificates that you generate.

3.subjectAltName = Assigned IP Address

3.subjectAltName_default = 192.168.1.1/32