File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / README
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 00:20:08 2021 UTC (3 years, 3 months ago) by misho
Branches: strongswan, MAIN
CVS tags: v5_9_2p0, HEAD
strongswan 5.9.2

    1: # strongSwan Configuration #
    2: 
    3: ## Overview ##
    4: 
    5: strongSwan is an OpenSource IPsec-based VPN solution.
    6: 
    7: This document is just a short introduction of the strongSwan **swanctl** command
    8: which uses the modern [**vici**](src/libcharon/plugins/vici/README.md) *Versatile
    9: IKE Configuration Interface*. The deprecated **ipsec** command using the legacy
   10: **stroke** configuration interface is described [**here**](README_LEGACY.md).
   11: For more detailed information consult the man pages and
   12: [**our wiki**](https://wiki.strongswan.org).
   13: 
   14: 
   15: ## Quickstart ##
   16: 
   17: Certificates for users, hosts and gateways are issued by a fictitious
   18: strongSwan CA. In our example scenarios the CA certificate `strongswanCert.pem`
   19: must be present on all VPN endpoints in order to be able to authenticate the
   20: peers. For your particular VPN application you can either use certificates from
   21: any third-party CA or generate the needed private keys and certificates yourself
   22: with the strongSwan **pki** tool, the use of which will be explained in one of
   23: the sections following below.
   24: 
   25: 
   26: ### Site-to-Site Case ###
   27: 
   28: In this scenario two security gateways _moon_ and _sun_ will connect the
   29: two subnets _moon-net_ and _sun-net_ with each other through a VPN tunnel
   30: set up between the two gateways:
   31: 
   32:     10.1.0.0/16 -- | 192.168.0.1 | === | 192.168.0.2 | -- 10.2.0.0/16
   33:       moon-net          moon                 sun           sun-net
   34: 
   35: Configuration on gateway _moon_:
   36: 
   37:     /etc/swanctl/x509ca/strongswanCert.pem
   38:     /etc/swanctl/x509/moonCert.pem
   39:     /etc/swanctl/private/moonKey.pem
   40: 
   41:     /etc/swanctl/swanctl.conf:
   42: 
   43:         connections {
   44:             net-net {
   45:                 remote_addrs = 192.168.0.2
   46: 
   47:                 local {
   48:                     auth = pubkey
   49:                     certs = moonCert.pem
   50:                 }
   51:                 remote {
   52:                     auth = pubkey
   53:                     id = "C=CH, O=strongSwan, CN=sun.strongswan.org"
   54:                 }
   55:                 children {
   56:                     net-net {
   57:                         local_ts  = 10.1.0.0/16
   58:                         remote_ts = 10.2.0.0/16
   59:                         start_action = trap
   60:                     }
   61:                 }
   62:             }
   63:         }
   64: 
   65: Configuration on gateway _sun_:
   66: 
   67:     /etc/swanctl/x509ca/strongswanCert.pem
   68:     /etc/swanctl/x509/sunCert.pem
   69:     /etc/swanctl/private/sunKey.pem
   70: 
   71:     /etc/swanctl/swanctl.conf:
   72: 
   73:         connections {
   74:             net-net {
   75:                 remote_addrs = 192.168.0.1
   76: 
   77:                 local {
   78:                     auth = pubkey
   79:                     certs = sunCert.pem
   80:                 }
   81:                 remote {
   82:                     auth = pubkey
   83:                     id = "C=CH, O=strongSwan, CN=moon.strongswan.org"
   84:                 }
   85:                 children {
   86:                     net-net {
   87:                         local_ts  = 10.2.0.0/16
   88:                         remote_ts = 10.1.0.0/16
   89:                         start_action = trap
   90:                     }
   91:                 }
   92:             }
   93:         }
   94: 
   95: The local and remote identities used in this scenario are the
   96: *subjectDistinguishedNames* contained in the end entity certificates.
   97: The certificates and private keys are loaded into the **charon** daemon with
   98: the command
   99: 
  100:     swanctl --load-creds
  101: 
  102: whereas
  103: 
  104:     swanctl --load-conns
  105: 
  106: loads the connections defined in `swanctl.conf`. With `start_action = trap` the
  107: IPsec connection is automatically set up with the first plaintext payload IP
  108: packet wanting to go through the tunnel.
  109: 
  110: ### Host-to-Host Case ###
  111: 
  112: This is a setup between two single hosts which don't have a subnet behind
  113: them.  Although IPsec transport mode would be sufficient for host-to-host
  114: connections we will use the default IPsec tunnel mode.
  115: 
  116:     | 192.168.0.1 | === | 192.168.0.2 |
  117:          moon                sun
  118: 
  119: Configuration on host _moon_:
  120: 
  121:     /etc/swanctl/x509ca/strongswanCert.pem
  122:     /etc/swanctl/x509/moonCert.pem
  123:     /etc/swanctl/private/moonKey.pem
  124: 
  125:     /etc/swanctl/swanctl.conf:
  126: 
  127:         connections {
  128:             host-host {
  129:                 remote_addrs = 192.168.0.2
  130: 
  131:                 local {
  132:                     auth=pubkey
  133:                     certs = moonCert.pem
  134:                 }
  135:                 remote {
  136:                     auth = pubkey
  137:                     id = "C=CH, O=strongSwan, CN=sun.strongswan.org"
  138:                 }
  139:                 children {
  140:                     net-net {
  141:                         start_action = trap
  142:                     }
  143:                 }
  144:             }
  145:         }
  146: 
  147: Configuration on host _sun_:
  148: 
  149:     /etc/swanctl/x509ca/strongswanCert.pem
  150:     /etc/swanctl/x509/sunCert.pem
  151:     /etc/swanctl/private/sunKey.pem
  152: 
  153:     /etc/swanctl/swanctl.conf:
  154: 
  155:         connections {
  156:             host-host {
  157:                 remote_addrs = 192.168.0.1
  158: 
  159:                 local {
  160:                     auth = pubkey
  161:                     certs = sunCert.pem
  162:                 }
  163:                 remote {
  164:                     auth = pubkey
  165:                     id = "C=CH, O=strongSwan, CN=moon.strongswan.org"
  166:                 }
  167:                 children {
  168:                     host-host {
  169:                         start_action = trap
  170:                     }
  171:                 }
  172:             }
  173:         }
  174: 
  175: 
  176: ### Roadwarrior Case ###
  177: 
  178: This is a very common case where a strongSwan gateway serves an arbitrary
  179: number of remote VPN clients usually having dynamic IP addresses.
  180: 
  181:     10.1.0.0/16 -- | 192.168.0.1 | === | x.x.x.x |
  182:       moon-net          moon              carol
  183: 
  184: Configuration on gateway _moon_:
  185: 
  186:     /etc/swanctl/x509ca/strongswanCert.pem
  187:     /etc/swanctl/x509/moonCert.pem
  188:     /etc/swanctl/private/moonKey.pem
  189: 
  190:     /etc/swanctl/swanctl.conf:
  191: 
  192:         connections {
  193:             rw {
  194:                 local {
  195:                     auth = pubkey
  196:                     certs = moonCert.pem
  197:                     id = moon.strongswan.org
  198:                 }
  199:                 remote {
  200:                     auth = pubkey
  201:                 }
  202:                 children {
  203:                     net-net {
  204:                         local_ts  = 10.1.0.0/16
  205:                     }
  206:                 }
  207:             }
  208:         }
  209: 
  210: Configuration on roadwarrior _carol_:
  211: 
  212:     /etc/swanctl/x509ca/strongswanCert.pem
  213:     /etc/swanctl/x509/carolCert.pem
  214:     /etc/swanctl/private/carolKey.pem
  215: 
  216:     /etc/swanctl/swanctl.conf:
  217: 
  218:         connections {
  219:             home {
  220:                 remote_addrs = moon.strongswan.org
  221: 
  222:                 local {
  223:                     auth = pubkey
  224:                     certs = carolCert.pem
  225:                     id = carol@strongswan.org
  226:                 }
  227:                 remote {
  228:                     auth = pubkey
  229:                     id = moon.strongswan.org
  230:                 }
  231:                 children {
  232:                     home {
  233:                         local_ts  = 10.1.0.0/16
  234:                         start_action = start
  235:                     }
  236:                 }
  237:             }
  238:         }
  239: 
  240: For `remote_addrs` the hostname `moon.strongswan.org` was chosen which will be
  241: resolved by DNS at runtime into the corresponding IP destination address.
  242: In this scenario the identity of the roadwarrior `carol` is the email address
  243: `carol@strongswan.org` which must be included as a *subjectAlternativeName* in
  244: the roadwarrior certificate `carolCert.pem`.
  245: 
  246: 
  247: ### Roadwarrior Case with Virtual IP ###
  248: 
  249: Roadwarriors usually have dynamic IP addresses assigned by the ISP they are
  250: currently attached to.  In order to simplify the routing from _moon-net_ back
  251: to the remote access client _carol_ it would be desirable if the roadwarrior had
  252: an inner IP address chosen from a pre-defined pool.
  253: 
  254:     10.1.0.0/16 -- | 192.168.0.1 | === | x.x.x.x | -- 10.3.0.1
  255:       moon-net          moon              carol       virtual IP
  256: 
  257: In our example the virtual IP address is chosen from the address pool
  258: `10.3.0.0/16` which can be configured by adding the section
  259: 
  260:     pools {
  261:         rw_pool {
  262:             addrs = 10.3.0.0/16
  263:         }
  264:     }
  265: 
  266: to the gateway's `swanctl.conf` from where they are loaded into the **charon**
  267: daemon using the command
  268: 
  269:     swanctl --load-pools
  270: 
  271: To request an IP address from this pool a roadwarrior can use IKEv1 mode config
  272: or IKEv2 configuration payloads. The configuration for both is the same
  273: 
  274:     vips = 0.0.0.0
  275: 
  276: Configuration on gateway _moon_:
  277: 
  278:     /etc/swanctl/x509ca/strongswanCert.pem
  279:     /etc/swanctl/x509/moonCert.pem
  280:     /etc/swanctl/private/moonKey.pem
  281: 
  282:     /etc/swanctl/swanctl.conf:
  283: 
  284:         connections {
  285:             rw {
  286:                 pools = rw_pool
  287: 
  288:                 local {
  289:                     auth = pubkey
  290:                     certs = moonCert.pem
  291:                     id = moon.strongswan.org
  292:                 }
  293:                 remote {
  294:                     auth = pubkey
  295:                 }
  296:                 children {
  297:                     net-net {
  298:                         local_ts  = 10.1.0.0/16
  299:                     }
  300:                 }
  301:             }
  302:         }
  303: 
  304:         pools {
  305:             rw_pool {
  306:                 addrs = 10.30.0.0/16
  307:             }
  308:         }
  309: 
  310: Configuration on roadwarrior _carol_:
  311: 
  312:     /etc/swanctl/x509ca/strongswanCert.pem
  313:     /etc/swanctl/x509/carolCert.pem
  314:     /etc/swanctl/private/carolKey.pem
  315: 
  316:     /etc/swanctl/swanctl.conf:
  317: 
  318:         connections {
  319:             home {
  320:                 remote_addrs = moon.strongswan.org
  321:                 vips = 0.0.0.0
  322: 
  323:                 local {
  324:                     auth = pubkey
  325:                     certs = carolCert.pem
  326:                     id = carol@strongswan.org
  327:                 }
  328:                 remote {
  329:                     auth = pubkey
  330:                     id = moon.strongswan.org
  331:                 }
  332:                 children {
  333:                     home {
  334:                         local_ts  = 10.1.0.0/16
  335:                         start_action = start
  336:                     }
  337:                 }
  338:             }
  339:         }
  340: 
  341: 
  342: ### Roadwarrior Case with EAP Authentication ###
  343: 
  344: This is a very common case where a strongSwan gateway serves an arbitrary
  345: number of remote VPN clients which authenticate themselves via a password
  346: based *Extended Authentication Protocol* as e.g. *EAP-MD5* or *EAP-MSCHAPv2*.
  347: 
  348:     10.1.0.0/16 -- | 192.168.0.1 | === | x.x.x.x |
  349:       moon-net          moon              carol
  350: 
  351: Configuration on gateway _moon_:
  352: 
  353:     /etc/swanctl/x509ca/strongswanCert.pem
  354:     /etc/swanctl/x509/moonCert.pem
  355:     /etc/swanctl/private/moonKey.pem
  356: 
  357:     /etc/swanctl/swanctl.conf:
  358: 
  359:         connections {
  360:             rw {
  361:                 local {
  362:                     auth = pubkey
  363:                     certs = moonCert.pem
  364:                     id = moon.strongswan.org
  365:                 }
  366:                 remote {
  367:                     auth = eap-md5
  368:                 }
  369:                 children {
  370:                     net-net {
  371:                         local_ts  = 10.1.0.0/16
  372:                     }
  373:                 }
  374:                 send_certreq = no
  375:             }
  376:         }
  377: 
  378: The  `swanctl.conf` file additionally contains a `secrets` section defining all
  379: client credentials
  380: 
  381:         secrets {
  382:             eap-carol {
  383:                 id = carol@strongswan.org
  384:                 secret = Ar3etTnp
  385:             }
  386:             eap-dave {
  387:                 id = dave@strongswan.org
  388:                 secret = W7R0g3do
  389:             }
  390:         }
  391: 
  392: Configuration on roadwarrior _carol_:
  393: 
  394:     /etc/swanctl/x509ca/strongswanCert.pem
  395: 
  396:     /etc/swanctl/swanctl.conf:
  397: 
  398:         connections {
  399:             home {
  400:                 remote_addrs = moon.strongswan.org
  401: 
  402:                 local {
  403:                     auth = eap
  404:                     id = carol@strongswan.org
  405:                 }
  406:                 remote {
  407:                     auth = pubkey
  408:                     id = moon.strongswan.org
  409:                 }
  410:                 children {
  411:                     home {
  412:                         local_ts  = 10.1.0.0/16
  413:                         start_action = start
  414:                     }
  415:                 }
  416:             }
  417:         }
  418: 
  419:         secrets {
  420:             eap-carol {
  421:                 id = carol@strongswan.org
  422:                 secret = Ar3etTnp
  423:             }
  424:         }
  425: 
  426: 
  427: ### Roadwarrior Case with EAP Identity ###
  428: 
  429: Often a client EAP identity is exchanged via EAP which differs from the
  430: external IKEv2 identity. In this example the IKEv2 identity defaults to
  431: the IPv4 address of the client.
  432: 
  433:     10.1.0.0/16 -- | 192.168.0.1 | === | x.x.x.x |
  434:       moon-net          moon              carol
  435: 
  436: Configuration on gateway _moon_:
  437: 
  438:     /etc/swanctl/x509ca/strongswanCert.pem
  439:     /etc/swanctl/x509/moonCert.pem
  440:     /etc/swanctl/private/moonKey.pem
  441: 
  442:     /etc/swanctl/swanctl.conf:
  443: 
  444:         connections {
  445:             rw {
  446:                 local {
  447:                     auth = pubkey
  448:                     certs = moonCert.pem
  449:                     id = moon.strongswan.org
  450:                 }
  451:                 remote {
  452:                     auth = eap-md5
  453:                     eap_id = %any
  454:                 }
  455:                 children {
  456:                     net-net {
  457:                         local_ts  = 10.1.0.0/16
  458:                     }
  459:                 }
  460:                 send_certreq = no
  461:             }
  462:         }
  463: 
  464:         secrets {
  465:             eap-carol {
  466:                 id = carol
  467:                 secret = Ar3etTnp
  468:             }
  469:             eap-dave {
  470:                 id = dave
  471:                 secret = W7R0g3do
  472:             }
  473:         }
  474: 
  475: Configuration on roadwarrior _carol_:
  476: 
  477:     /etc/swanctl/x509ca/strongswanCert.pem
  478: 
  479:     /etc/swanctl/swanctl.conf:
  480: 
  481:         connections {
  482:             home {
  483:                 remote_addrs = moon.strongswan.org
  484: 
  485:                 local {
  486:                     auth = eap
  487:                     eap_id = carol
  488:                 }
  489:                 remote {
  490:                     auth = pubkey
  491:                     id = moon.strongswan.org
  492:                 }
  493:                 children {
  494:                     home {
  495:                         local_ts  = 10.1.0.0/16
  496:                         start_action = start
  497:                     }
  498:                 }
  499:             }
  500:         }
  501: 
  502:         secrets {
  503:             eap-carol {
  504:                 id = carol
  505:                 secret = Ar3etTnp
  506:             }
  507:         }
  508: 
  509: 
  510: ## Generating Certificates and CRLs ##
  511: 
  512: This section is not a full-blown tutorial on how to use the strongSwan **pki**
  513: tool. It just lists a few points that are relevant if you want to generate your
  514: own certificates and CRLs for use with strongSwan.
  515: 
  516: 
  517: ### Generating a CA Certificate ###
  518: 
  519: The pki statement
  520: 
  521:     pki --gen --type ed25519 --outform pem > strongswanKey.pem
  522: 
  523: generates an elliptic Edwards-Curve key with a cryptographic strength of 128
  524: bits. The corresponding public key is packed into a self-signed CA certificate
  525: with a lifetime of 10 years (3652 days)
  526: 
  527:     pki --self --ca --lifetime 3652 --in strongswanKey.pem \
  528:                --dn "C=CH, O=strongSwan, CN=strongSwan Root CA" \
  529:                --outform pem > strongswanCert.pem
  530: 
  531: which can be listed with the command
  532: 
  533:     pki --print --in strongswanCert.pem
  534: 
  535:     subject:  "C=CH, O=strongSwan, CN=strongSwan Root CA"
  536:     issuer:   "C=CH, O=strongSwan, CN=strongSwan Root CA"
  537:     validity:  not before May 18 08:32:06 2017, ok
  538:                not after  May 18 08:32:06 2027, ok (expires in 3651 days)
  539:     serial:    57:e0:6b:3a:9a:eb:c6:e0
  540:     flags:     CA CRLSign self-signed
  541:     subjkeyId: 2b:95:14:5b:c3:22:87:de:d1:42:91:88:63:b3:d5:c1:92:7a:0f:5d
  542:     pubkey:    ED25519 256 bits
  543:     keyid:     a7:e1:6a:3f:e7:6f:08:9d:89:ec:23:92:a9:a1:14:3c:78:a8:7a:f7
  544:     subjkey:   2b:95:14:5b:c3:22:87:de:d1:42:91:88:63:b3:d5:c1:92:7a:0f:5d
  545: 
  546: If you prefer the CA private key and X.509 certificate to be in binary DER format
  547: then just omit the `--outform pem` option. The directory `/etc/swanctl/x509ca`
  548: contains all required CA certificates either in binary DER or in Base64 PEM
  549: format. Irrespective of the file suffix the correct format will be determined
  550: by strongSwan automagically.
  551: 
  552: 
  553: ### Generating a Host or User End Entity Certificate ###
  554: 
  555: Again we are using the command
  556: 
  557:     pki --gen --type ed25519 --outform pem > moonKey.pem
  558: 
  559: to generate an Ed25519 private key for the host `moon`. Alternatively you could
  560: type
  561: 
  562:     pki --gen --type rsa --size 3072 > moonKey.der
  563: 
  564: to generate a traditional 3072 bit RSA key and store it in binary DER format.
  565: As an alternative a **TPM 2.0** *Trusted Platform Module* available on every
  566: recent Intel platform could be used as a virtual smartcard to securely store an
  567: RSA or ECDSA private key. For details, refer to the TPM 2.0
  568: [HOWTO](https://wiki.strongswan.org/projects/strongswan/wiki/TpmPlugin).
  569: 
  570: In a next step the command
  571: 
  572:     pki --req --type priv --in moonKey.pem \
  573:               --dn "C=CH, O=strongswan, CN=moon.strongswan.org" \
  574:               --san moon.strongswan.org --outform pem > moonReq.pem
  575: 
  576: creates a PKCS#10 certificate request that has to be signed by the CA.
  577: Through the [multiple] use of the `--san` parameter any number of desired
  578: *subjectAlternativeNames* can be added to the request. These can be of the
  579: form
  580: 
  581:     --san sun.strongswan.org     # fully qualified host name
  582:     --san carol@strongswan.org   # RFC822 user email address
  583:     --san 192.168.0.1            # IPv4 address
  584:     --san fec0::1                # IPv6 address
  585: 
  586: Based on the certificate request the CA issues a signed end entity certificate
  587: with the following command
  588: 
  589:     pki --issue --cacert strongswanCert.pem --cakey strongswanKey.pem \
  590:                 --type pkcs10 --in moonReq.pem --serial 01 --lifetime 1826 \
  591:                 --outform pem > moonCert.pem
  592: 
  593: If the `--serial` parameter with a hexadecimal argument is omitted then a random
  594: serial number is generated. Some third party VPN clients require that a VPN
  595: gateway certificate contains the *TLS Server Authentication* Extended Key Usage
  596: (EKU) flag which can be included with the following option
  597: 
  598:     --flag serverAuth
  599: 
  600: If you want to use the dynamic CRL fetching feature described in one of the
  601: following sections then you may include one or several *crlDistributionPoints*
  602: in your end entity certificates using the `--crl` parameter
  603: 
  604:     --crl  http://crl.strongswan.org/strongswan.crl
  605:     --crl "ldap://ldap.strongswan.org/cn=strongSwan Root CA, o=strongSwan,c=CH?certificateRevocationList"
  606: 
  607: The issued host certificate can be listed with
  608: 
  609:     pki --print --in moonCert.pem
  610: 
  611:     subject:  "C=CH, O=strongSwan, CN=moon.strongswan.org"
  612:     issuer:   "C=CH, O=strongSwan, CN=strongSwan Root CA"
  613:     validity:  not before May 19 10:28:19 2017, ok
  614:                not after  May 19 10:28:19 2022, ok (expires in 1825 days)
  615:     serial:    01
  616:     altNames:  moon.strongswan.org
  617:     flags:     serverAuth
  618:     CRL URIs:  http://crl.strongswan.org/strongswan.crl
  619:     authkeyId: 2b:95:14:5b:c3:22:87:de:d1:42:91:88:63:b3:d5:c1:92:7a:0f:5d
  620:     subjkeyId: 60:9d:de:30:a6:ca:b9:8e:87:bb:33:23:61:19:18:b8:c4:7e:23:8f
  621:     pubkey:    ED25519 256 bits
  622:     keyid:     39:1b:b3:c2:34:72:1a:01:08:40:ce:97:75:b8:be:ce:24:30:26:29
  623:     subjkey:   60:9d:de:30:a6:ca:b9:8e:87:bb:33:23:61:19:18:b8:c4:7e:23:8f
  624: 
  625: Usually, a Windows, OSX, Android or iOS based VPN client needs its private key,
  626: its host or user certificate and the CA certificate.  The most convenient way
  627: to load this information is to put everything into a PKCS#12 container:
  628: 
  629:     openssl pkcs12 -export -inkey carolKey.pem \
  630:                    -in carolCert.pem -name "carol" \
  631:                    -certfile strongswanCert.pem -caname "strongSwan Root CA" \
  632:                    -out carolCert.p12
  633: 
  634: The strongSwan **pki** tool currently is not able to create PKCS#12 containers
  635: so that **openssl** must be used.
  636: 
  637: 
  638: ### Generating a CRL ###
  639: 
  640: An empty CRL that is signed by the CA can be generated with the command
  641: 
  642:     pki --signcrl --cacert strongswanCert.pem --cakey strongswanKey.pem \
  643:                   --lifetime 30 > strongswan.crl
  644: 
  645: If you omit the `--lifetime` option then the default value of 15 days is used.
  646: CRLs can either be uploaded to a HTTP or LDAP server or put in binary DER or
  647: Base64 PEM format into the `/etc/swanctl/x509crl` directory from where they are
  648: loaded into the **charon** daemon with the command
  649: 
  650:     swanctl --load-creds
  651: 
  652: 
  653: ### Revoking a Certificate ###
  654: 
  655: A specific end entity certificate is revoked with the command
  656: 
  657:     pki --signcrl --cacert strongswanCert.pem --cakey strongswanKey.pem \
  658:                   --lifetime 30 --lastcrl strongswan.crl \
  659:                   --reason key-compromise --cert moonCert.pem > new.crl
  660: 
  661: Instead of the certificate file (in our example moonCert.pem), the serial number
  662: of the certificate to be revoked can be indicated using the `--serial`
  663: parameter. The `pki --signcrl --help` command documents all possible revocation
  664: reasons but the `--reason` parameter can also be omitted. The content of the new
  665: CRL file can be listed with the command
  666: 
  667:     pki --print --type crl --in new.crl
  668: 
  669:     issuer:   "C=CH, O=strongSwan, CN=strongSwan Root CA"
  670:     update:    this on May 19 11:13:01 2017, ok
  671:                next on Jun 18 11:13:01 2017, ok (expires in 29 days)
  672:     serial:    02
  673:     authKeyId: 2b:95:14:5b:c3:22:87:de:d1:42:91:88:63:b3:d5:c1:92:7a:0f:5d
  674:     1 revoked certificate:
  675:       01: May 19 11:13:01 2017, key compromise
  676: 
  677: 
  678: ### Local Caching of CRLs ###
  679: 
  680: The `strongswan.conf` option
  681: 
  682:     charon {
  683:         cache_crls = yes
  684:     }
  685: 
  686: activates the local caching of CRLs that were dynamically fetched from an
  687: HTTP or LDAP server.  Cached copies are stored in `/etc/swanctl/x509crl` using a
  688: unique filename formed from the issuer's *subjectKeyIdentifier* and the
  689: suffix `.crl`.
  690: 
  691: With the cached copy the CRL is immediately available after startup.  When the
  692: local copy has become stale, an updated CRL is automatically fetched from one of
  693: the defined CRL distribution points during the next IKEv2 authentication.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>