• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
Netgate Discussion Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login

How to add extendedKeyUsage = serverAuth,clientAuth into server cert with Certificate Manager

Scheduled Pinned Locked Moved 2.5 Development Snapshots (Retired)
11 Posts 3 Posters 7.3k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R
    rexchow
    last edited by Oct 30, 2019, 8:15 AM

    extendedKeyUsage, serverAuth,clientAuth

    1 Reply Last reply Reply Quote 0
    • J
      jimp Rebel Alliance Developer Netgate
      last edited by Oct 30, 2019, 12:29 PM

      Why do you need both?

      If you set the certificate type to Server, then it gets TLS Web Server Authentication, IP Security IKE Intermediate in EKU, if you set it to a User cert, then it gets TLS Web Client Authentication in EKU.

      Remember: Upvote with the 👍 button for any user/post you find to be helpful, informative, or deserving of recognition!

      Need help fast? Netgate Global Support!

      Do not Chat/PM for help!

      1 Reply Last reply Reply Quote 0
      • R
        rexchow
        last edited by Oct 30, 2019, 6:38 PM

        @jimp thanks for the reply. Having both EKU: serverAuth,clientAuth is required for some enterprise networking appliance for features such as radius over TLS to work. If the UI allows for certificate custom types, it would open up more use cases. I tried the following that was posted on another site without success:

        Step 1: Add certificate info at the end of /etc/ssl/openssl.cnf
        [ cert_type ]
        subjectKeyIdentifier=hash
        basicConstraints = CA:FALSE
        keyUsage = digitalSignature
        extendedKeyUsage = codeSigning, msCodeInd, msCodeCom
        nsCertType = client, email, objsign

        Step 2: Add the cert_type to /etc/inc/certs.inc
        You will need to search for switch ($type) {
        in this switch you add a new case
        case "customtype":
        $cert_type = "cert_type";
        break;

        result:
        switch ($type) {
        case "ca":
        $cert_type = "v3_ca";
        break;
        case "server":
        case "self-signed":
        $cert_type = "server";
        break;
        case "customtype":
        $cert_type = "cert_type";
        break;
        default:
        $cert_type = "usr_cert";
        break;
        }

        Step 3: Add the Type to /usr/local/www/system_certmanager.php
        In this step you give the certificate type a name in the Web-ui
        search for: $cert_types = array(
        add: "customtype" => "custom type",

        Result:

        $cert_types = array( "ca" => "Certificate Authority",
        "server" => "Server Certificate",
        "customtype" => "custom type",
        "user" => "User Certificate");

        Suggestions?

        1 Reply Last reply Reply Quote 0
        • J
          johnpoz LAYER 8 Global Moderator
          last edited by Oct 30, 2019, 6:46 PM

          @rexchow said in How to add extendedKeyUsage = serverAuth,clientAuth into server cert with Certificate Manager:

          some enterprise networking appliance

          Like what exactly - please post the exact appliance your working with.

          An intelligent man is sometimes forced to be drunk to spend time with his fools
          If you get confused: Listen to the Music Play
          Please don't Chat/PM me for help, unless mod related
          SG-4860 24.11 | Lab VMs 2.7.2, 24.11

          R 1 Reply Last reply Nov 1, 2019, 10:58 PM Reply Quote 0
          • R
            rexchow
            last edited by Oct 30, 2019, 7:23 PM

            Anyone else have a work around for this via Pfsense 2.4 or 2.5?

            1 Reply Last reply Reply Quote 0
            • J
              jimp Rebel Alliance Developer Netgate
              last edited by jimp Oct 31, 2019, 3:21 PM Oct 30, 2019, 7:54 PM

              That patch is close but the name in openssl.cnf should probably be [cert_type_san] since _san would get added to the $cert_type string lower down.

              I don't see this being added in the GUI any time soon, though, since it isn't something you can let the user pick and choose. Those get defined in openssl.cnf, and that isn't changed dynamically.

              I did notice that ACME certs end up with both, so I'm not sure what their reasoning might be behind that. It may not be completely unheard of, but still seems odd.

              So if it does get added the easiest thing to do would just be to enable it for all server certs, not an extra choice.

              Remember: Upvote with the 👍 button for any user/post you find to be helpful, informative, or deserving of recognition!

              Need help fast? Netgate Global Support!

              Do not Chat/PM for help!

              1 Reply Last reply Reply Quote 0
              • J
                jimp Rebel Alliance Developer Netgate
                last edited by Oct 31, 2019, 3:47 PM

                Looks like ISRG (in other words, Let's Encrypt) recommends having both for end entity certificates, https://letsencrypt.org/documents/isrg-cps-v2.6/ and I don't see any recommendations against including both or downsides, so it should be safe to add clientAuth to server certificates.

                More info at https://redmine.pfsense.org/issues/9868

                Remember: Upvote with the 👍 button for any user/post you find to be helpful, informative, or deserving of recognition!

                Need help fast? Netgate Global Support!

                Do not Chat/PM for help!

                1 Reply Last reply Reply Quote 1
                • R
                  rexchow
                  last edited by Nov 1, 2019, 10:56 PM

                  Hello @jimp
                  Thanks for the feedback.

                  I've updated both / etc/ssl/openssl.cnf and /usr/local/share/pfsense/ssl/openssl.cnf [ server] section & rebooted pfsense, but the newly generated server cert from cert. manager still does not include 'clientAuth'

                  extendedKeyUsage = serverAuth,clientAuth,1.3.6.1.5.5.8.2.2

                  Suggestions?

                  1 Reply Last reply Reply Quote 0
                  • R
                    rexchow @johnpoz
                    last edited by Nov 1, 2019, 10:58 PM

                    @johnpoz
                    Any appliance that support radsec radiusproxy client will likely need this requirement unless the appliance handles seperately a server and client certificate

                    1 Reply Last reply Reply Quote 0
                    • J
                      jimp Rebel Alliance Developer Netgate
                      last edited by Nov 1, 2019, 11:19 PM

                      https://redmine.pfsense.org/projects/pfsense/repository/revisions/46869dd2b5ebf32e8297d65f98444fb38d314336/diff

                      Remember: Upvote with the 👍 button for any user/post you find to be helpful, informative, or deserving of recognition!

                      Need help fast? Netgate Global Support!

                      Do not Chat/PM for help!

                      1 Reply Last reply Reply Quote 0
                      • J
                        jimp Rebel Alliance Developer Netgate
                        last edited by Nov 1, 2019, 11:19 PM

                        Change all four instances

                        Remember: Upvote with the 👍 button for any user/post you find to be helpful, informative, or deserving of recognition!

                        Need help fast? Netgate Global Support!

                        Do not Chat/PM for help!

                        1 Reply Last reply Reply Quote 0
                        9 out of 11
                        • First post
                          9/11
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.
                          This community forum collects and processes your personal information.
                          consent.not_received