Certificate–based authentication
This section provides an overview of how the FortiGate unit verifies the identities of administrators, SSL VPN
users, or IPsec VPN peers using X.509 security certificates. The following topics are included in this section:
- What is a security certificate?
- Certificates overview
- Managing X.509 certificates
- Configuring certificate-based authentication
- Example — Generate a CSR on the FortiGate unit
- Example — Generate and Import CA certificate with private key pair on OpenSSL
- Example — Generate an SSL certificate in OpenSSL
What is a security certificate?
A security certificate is a small text file that is part of a third-party generated public key infrastructure (PKI) to help guarantee the identity of both the user logging on and the web site they where they are logging in.
A certificate includes identifying information such as the company and location information for the web site, as well as the third-party company name, the expiry date of the certificate, and the public key.
FortiGate units use X.509 certificates to authenticate single sign-on (SSO) for users. The X.509 standard has been in use since before 2000, but has gained popularity with the Internet’s increased popularity. X.509 v3 is defined in RFC 5280 and specifies standard formats for public key certificates, certificate revocation lists, and a certification path validation algorithm. The unused earlier X.509 version 1 was defined in RFC 1422.
The main difference between X.509 and PGP certificates is that where in PGP anyone can sign a certificate, for X.509 only a trusted authority can sign certificates. This limits the source of certificates to well known and trustworthy sources. Where PGP is well suited for one-to-one communications, the X.509 infrastructure is intended to be used in many different situations including one-to-many communications. Some common filename extensions for X.509 certificates are listed below.
Common certificate filename extensions
Filetype | Format name | Description |
.pem |
Privacy Enhanced Mail (PEM) |
Base64 encoded DER certificate, that uses: “—–BEGIN CERTIFICATE—–” and “—–END CERTIFICATE—–” |
.cer
.crt
.der
Security CERtificate
Usually binary DER form, but Base64-encoded cer- tificates are common too.
.p7b
.p7c
Structure without data, just certificates or CRLs.
PKCS#7 is a standard for signing or encrypting (offi- cially called “enveloping”) data.
.p12 PKCS#12 May contain certificate(s) (public) and private keys
(password protected).
.pfx personal information exchange (PFX) Older format. Came before PKCS#12. Usually today data is in PKCS#12 format.
Certificates overview
Certificates play a major role in authentication of clients connecting to network services via HTTPS, both for administrators and SSL VPN users. Certificate authentication is optional for IPsec VPN peers.
- Certificates and protocols
- IPsec VPNs and certificates
- Certificate types on the FortiGate unit
Certificates and protocols
There are a number of protocols that are commonly used with certificates including SSL and HTTPS, and other certificate-related protocols.
SSL and HTTPS
The secure HTTP (HTTPS) protocol uses SSL. Certificates are an integral part of SSL. When a web browser connects to the FortiGate unit via HTTPS, a certificate is used to verify the FortiGate unit’s identity to the client. Optionally, the FortiGate unit can require the client to authenticate itself in return.
By default, the FortiGate unit uses a self-signed security certificate to authenticate itself to HTTPS clients. When the certificate is offered, the client browser displays two security messages.
- The first message prompts users to accept and optionally install the FortiGate unit’s self-signed security certificate.
If the user does not accept the certificate, the FortiGate unit refuses the connection. When the user accepts the certificate, the FortiGate login page is displayed, and the credentials entered by the user are encrypted before they are sent to the FortiGate unit. If the user chooses to install the certificate, the prompt is not displayed again.
- Just before the FortiGate login page is displayed, a second message informs users that the FortiGate certificate distinguished name differs from the original request. This message is displayed because the FortiGate unit redirects the connection (away from the distinguished name recorded in the self-signed certificate) and can be ignored.
Optionally, you can install an X.509 server certificate issued by a certificate authority (CA) on the FortiGate unit. You can then configure the FortiGate unit to identify itself using the server certificate instead of the self-signed certificate.
For more information, see the FortiOS Handbook SSL VPN guide.
After successful certificate authentication, communication between the client browser and the FortiGate unit is encrypted using SSL over the HTTPS link.
Certificate–related protocols
There are multiple protocols that are required for handling certificates. These include the Online Certificate Status Protocol (OCSP), Secure Certificate Enrollment Protocol (SCEP), and Server-based Certificate Validation Protocol (SCVP).
Online Certificate Status Protocol
Online Certificate Status Protocol (OCSP) allows the verification of X.509 certificate expiration dates. This is important to prevent hackers from changing the expiry date on an old certificate to a future date.
Normally certificate revocation lists (CRLs) are used, but OCSP is an alternate method available. However a CRL is a public list, and some companies may want to avoid the public exposure of their certificate structure even if it is only invalid certificates.
The OSCP check on the certificate’s revocation status is typically carried out over HTTP with a request-response format. The authority responding can reply with a status of good, revoked, or unknown for the certificate in question.
Secure Certificate Enrollment Protocol
Secure Certificate Enrollment Protocol (SCEP) is an automated method of signing up for certificates. Typically this involves generating a request you send directly to the SCEP service, instead of generating a file request that may or may not be signed locally.
Server–based Certificate Validation Protocol
Server-based Certificate Validation Protocol (SCVP) is used to trace a certificate back to a valid root level certificate. This ensures that each step along the path is valid and trustworthy.