From 1caf1bcace3664d0d7a9f1b87171b42bd9b72bbe Mon Sep 17 00:00:00 2001 From: rileynewton <95654936+rileynewton@users.noreply.github.com> Date: Tue, 20 Jun 2023 11:11:01 -0700 Subject: [PATCH] (RE-15366, maint) Migrate travis testing to GH action, regen certs and add regen script --- .github/workflows/lein-test.yaml | 45 + .travis.yml | 29 - dev-resources/java.security.jdk17-fips | 1098 +++++++++++++++++ dev-resources/ssl/ca.pem | 52 +- dev-resources/ssl/cert.pem | 48 +- dev-resources/ssl/config/ca.pem | 21 + dev-resources/ssl/config/ca_req.pem | 18 + dev-resources/ssl/config/cakey.pem | 0 dev-resources/ssl/config/certdump/.gitkeep | 0 dev-resources/ssl/config/client-cert.pem | 19 + dev-resources/ssl/config/client-key.pem | 28 + dev-resources/ssl/config/client-req.pem | 17 + dev-resources/ssl/config/index.txt | 1 + dev-resources/ssl/config/index.txt.attr | 1 + dev-resources/ssl/config/move_files.sh | 5 + dev-resources/ssl/config/openssl.cnf | 53 + .../ssl/config/private_keys/cakey.pem | 28 + dev-resources/ssl/config/regenerate_ca.sh | 5 + dev-resources/ssl/config/serial | 1 + dev-resources/ssl/key.pem | 79 +- project.clj | 3 +- 21 files changed, 1406 insertions(+), 145 deletions(-) create mode 100644 .github/workflows/lein-test.yaml delete mode 100644 .travis.yml create mode 100644 dev-resources/java.security.jdk17-fips create mode 100644 dev-resources/ssl/config/ca.pem create mode 100644 dev-resources/ssl/config/ca_req.pem create mode 100644 dev-resources/ssl/config/cakey.pem create mode 100644 dev-resources/ssl/config/certdump/.gitkeep create mode 100644 dev-resources/ssl/config/client-cert.pem create mode 100644 dev-resources/ssl/config/client-key.pem create mode 100644 dev-resources/ssl/config/client-req.pem create mode 100644 dev-resources/ssl/config/index.txt create mode 100644 dev-resources/ssl/config/index.txt.attr create mode 100755 dev-resources/ssl/config/move_files.sh create mode 100644 dev-resources/ssl/config/openssl.cnf create mode 100644 dev-resources/ssl/config/private_keys/cakey.pem create mode 100755 dev-resources/ssl/config/regenerate_ca.sh create mode 100644 dev-resources/ssl/config/serial diff --git a/.github/workflows/lein-test.yaml b/.github/workflows/lein-test.yaml new file mode 100644 index 0000000..f0cee16 --- /dev/null +++ b/.github/workflows/lein-test.yaml @@ -0,0 +1,45 @@ +name: lein_test + +on: + workflow_dispatch: + push: + branches: + - main + paths: ['src/**','test/**'] + pull_request: + types: [opened, reopened, edited, synchronize] + paths: ['src/**','test/**'] + +jobs: + run-lein-tests: + name: lein test - Java ${{ matrix.java }} + runs-on: ubuntu-latest + strategy: + matrix: + java: [ '8', '11', '17' ] + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Setup java + uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: ${{ matrix.java }} + - name: Install Clojure tools + uses: DeLaGuardo/setup-clojure@10.2 + with: + cli: latest # Clojure CLI based on tools.deps + lein: latest # Leiningen + boot: latest # Boot.clj + bb: latest # Babashka + clj-kondo: latest # Clj-kondo + cljstyle: latest # cljstyle + zprint: latest # zprint + - name: Run lein tests with dev profile + run: lein with-profile dev test + env: + FIPS: false + - name: Run lein tests with fips profile + run: lein with-profile fips test + env: + FIPS: true diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index aafb701..0000000 --- a/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -language: clojure -lein: 2.9.10 -jobs: - include: - - stage: jdk8 - script: lein with-profile dev test - jdk: openjdk8 - # this env var isn't actually used, but helps with readability - # in the Travis CI web page - env: - - FIPS=false - - # still jdk8 - script: lein with-profile fips test - jdk: openjdk8 - env: - - FIPS=true - - - stage: jdk11 - script: lein with-profile dev test - jdk: openjdk11 - env: - - FIPS=false - - # still jdk11 - script: lein with-profile fips test - jdk: openjdk11 - env: - - FIPS=true -notifications: - email: false diff --git a/dev-resources/java.security.jdk17-fips b/dev-resources/java.security.jdk17-fips new file mode 100644 index 0000000..ac046ad --- /dev/null +++ b/dev-resources/java.security.jdk17-fips @@ -0,0 +1,1098 @@ +# +# This is the "master security properties file". +# +# An alternate java.security properties file may be specified +# from the command line via the system property +# +# -Djava.security.properties= +# +# This properties file appends to the master security properties file. +# If both properties files specify values for the same key, the value +# from the command-line properties file is selected, as it is the last +# one loaded. +# +# Also, if you specify +# +# -Djava.security.properties== (2 equals), +# +# then that properties file completely overrides the master security +# properties file. +# +# To disable the ability to specify an additional properties file from +# the command line, set the key security.overridePropertiesFile +# to false in the master security properties file. It is set to true +# by default. + +# In this file, various security properties are set for use by +# java.security classes. This is where users can statically register +# Cryptography Package Providers ("providers" for short). The term +# "provider" refers to a package or set of packages that supply a +# concrete implementation of a subset of the cryptography aspects of +# the Java Security API. A provider may, for example, implement one or +# more digital signature algorithms or message digest algorithms. +# +# Each provider must implement a subclass of the Provider class. +# To register a provider in this master security properties file, +# specify the provider and priority in the format +# +# security.provider.= +# +# This declares a provider, and specifies its preference +# order n. The preference order is the order in which providers are +# searched for requested algorithms (when no specific provider is +# requested). The order is 1-based; 1 is the most preferred, followed +# by 2, and so on. +# +# must specify the name of the Provider as passed to its super +# class java.security.Provider constructor. This is for providers loaded +# through the ServiceLoader mechanism. +# +# must specify the subclass of the Provider class whose +# constructor sets the values of various properties that are required +# for the Java Security API to look up the algorithms or other +# facilities implemented by the provider. This is for providers loaded +# through classpath. +# +# Note: Providers can be dynamically registered instead by calls to +# either the addProvider or insertProviderAt method in the Security +# class. + +# +# List of providers and their preference orders (see above): +# +security.provider.1=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider +security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider fips:org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider +security.provider.3=SUN +security.provider.4=SunRsaSign +#security.provider.5=SunEC +#security.provider.6=SunJSSE +#security.provider.7=SunJCE +#security.provider.8=SunJGSS +#security.provider.9=SunSASL +#security.provider.10=XMLDSig +#security.provider.11=SunPCSC +#security.provider.12=JdkLDAP +#security.provider.13=JdkSASL +#security.provider.14=SunPKCS11 + +# +# A list of preferred providers for specific algorithms. These providers will +# be searched for matching algorithms before the list of registered providers. +# Entries containing errors (parsing, etc) will be ignored. Use the +# -Djava.security.debug=jca property to debug these errors. +# +# The property is a comma-separated list of serviceType.algorithm:provider +# entries. The serviceType (example: "MessageDigest") is optional, and if +# not specified, the algorithm applies to all service types that support it. +# The algorithm is the standard algorithm name or transformation. +# Transformations can be specified in their full standard name +# (ex: AES/CBC/PKCS5Padding), or as partial matches (ex: AES, AES/CBC). +# The provider is the name of the provider. Any provider that does not +# also appear in the registered list will be ignored. +# +# There is a special serviceType for this property only to group a set of +# algorithms together. The type is "Group" and is followed by an algorithm +# keyword. Groups are to simplify and lessen the entries on the property +# line. Current groups are: +# Group.SHA2 = SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256 +# Group.HmacSHA2 = HmacSHA224, HmacSHA256, HmacSHA384, HmacSHA512 +# Group.SHA2RSA = SHA224withRSA, SHA256withRSA, SHA384withRSA, SHA512withRSA +# Group.SHA2DSA = SHA224withDSA, SHA256withDSA, SHA384withDSA, SHA512withDSA +# Group.SHA2ECDSA = SHA224withECDSA, SHA256withECDSA, SHA384withECDSA, \ +# SHA512withECDSA +# Group.SHA3 = SHA3-224, SHA3-256, SHA3-384, SHA3-512 +# Group.HmacSHA3 = HmacSHA3-224, HmacSHA3-256, HmacSHA3-384, HmacSHA3-512 +# +# Example: +# jdk.security.provider.preferred=AES/GCM/NoPadding:SunJCE, \ +# MessageDigest.SHA-256:SUN, Group.HmacSHA2:SunJCE +# +#jdk.security.provider.preferred= + + +# +# Sun Provider SecureRandom seed source. +# +# Select the primary source of seed data for the "NativePRNG", "SHA1PRNG" +# and "DRBG" SecureRandom implementations in the "Sun" provider. +# (Other SecureRandom implementations might also use this property.) +# +# On Unix-like systems (for example, Solaris/Linux/MacOS), the +# "NativePRNG", "SHA1PRNG" and "DRBG" implementations obtains seed data from +# special device files such as file:/dev/random. +# +# On Windows systems, specifying the URLs "file:/dev/random" or +# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding +# mechanism for SHA1PRNG and DRBG. +# +# By default, an attempt is made to use the entropy gathering device +# specified by the "securerandom.source" Security property. If an +# exception occurs while accessing the specified URL: +# +# NativePRNG: +# a default value of /dev/random will be used. If neither +# are available, the implementation will be disabled. +# "file" is the only currently supported protocol type. +# +# SHA1PRNG and DRBG: +# the traditional system/thread activity algorithm will be used. +# +# The entropy gathering device can also be specified with the System +# property "java.security.egd". For example: +# +# % java -Djava.security.egd=file:/dev/random MainClass +# +# Specifying this System property will override the +# "securerandom.source" Security property. +# +# In addition, if "file:/dev/random" or "file:/dev/urandom" is +# specified, the "NativePRNG" implementation will be more preferred than +# DRBG and SHA1PRNG in the Sun provider. +# +securerandom.source=file:/dev/random + +# +# A list of known strong SecureRandom implementations. +# +# To help guide applications in selecting a suitable strong +# java.security.SecureRandom implementation, Java distributions should +# indicate a list of known strong implementations using the property. +# +# This is a comma-separated list of algorithm and/or algorithm:provider +# entries. +# +securerandom.strongAlgorithms=NativePRNGBlocking:SUN,DRBG:SUN + +# +# Sun provider DRBG configuration and default instantiation request. +# +# NIST SP 800-90Ar1 lists several DRBG mechanisms. Each can be configured +# with a DRBG algorithm name, and can be instantiated with a security strength, +# prediction resistance support, etc. This property defines the configuration +# and the default instantiation request of "DRBG" SecureRandom implementations +# in the SUN provider. (Other DRBG implementations can also use this property.) +# Applications can request different instantiation parameters like security +# strength, capability, personalization string using one of the +# getInstance(...,SecureRandomParameters,...) methods with a +# DrbgParameters.Instantiation argument, but other settings such as the +# mechanism and DRBG algorithm names are not currently configurable by any API. +# +# Please note that the SUN implementation of DRBG always supports reseeding. +# +# The value of this property is a comma-separated list of all configurable +# aspects. The aspects can appear in any order but the same aspect can only +# appear at most once. Its BNF-style definition is: +# +# Value: +# aspect { "," aspect } +# +# aspect: +# mech_name | algorithm_name | strength | capability | df +# +# // The DRBG mechanism to use. Default "Hash_DRBG" +# mech_name: +# "Hash_DRBG" | "HMAC_DRBG" | "CTR_DRBG" +# +# // The DRBG algorithm name. The "SHA-***" names are for Hash_DRBG and +# // HMAC_DRBG, default "SHA-256". The "AES-***" names are for CTR_DRBG, +# // default "AES-128" when using the limited cryptographic or "AES-256" +# // when using the unlimited. +# algorithm_name: +# "SHA-224" | "SHA-512/224" | "SHA-256" | +# "SHA-512/256" | "SHA-384" | "SHA-512" | +# "AES-128" | "AES-192" | "AES-256" +# +# // Security strength requested. Default "128" +# strength: +# "112" | "128" | "192" | "256" +# +# // Prediction resistance and reseeding request. Default "none" +# // "pr_and_reseed" - Both prediction resistance and reseeding +# // support requested +# // "reseed_only" - Only reseeding support requested +# // "none" - Neither prediction resistance not reseeding +# // support requested +# pr: +# "pr_and_reseed" | "reseed_only" | "none" +# +# // Whether a derivation function should be used. only applicable +# // to CTR_DRBG. Default "use_df" +# df: +# "use_df" | "no_df" +# +# Examples, +# securerandom.drbg.config=Hash_DRBG,SHA-224,112,none +# securerandom.drbg.config=CTR_DRBG,AES-256,192,pr_and_reseed,use_df +# +# The default value is an empty string, which is equivalent to +# securerandom.drbg.config=Hash_DRBG,SHA-256,128,none +# +securerandom.drbg.config= + +# +# Class to instantiate as the javax.security.auth.login.Configuration +# provider. +# +login.configuration.provider=sun.security.provider.ConfigFile + +# +# Default login configuration file +# +#login.config.url.1=file:${user.home}/.java.login.config + +# +# Class to instantiate as the system Policy. This is the name of the class +# that will be used as the Policy object. The system class loader is used to +# locate this class. +# +policy.provider=sun.security.provider.PolicyFile + +# The default is to have a single system-wide policy file, +# and a policy file in the user's home directory. +# +policy.url.1=file:${java.home}/conf/security/java.policy +policy.url.2=file:${user.home}/.java.policy + +# whether or not we expand properties in the policy file +# if this is set to false, properties (${...}) will not be expanded in policy +# files. +# +policy.expandProperties=true + +# whether or not we allow an extra policy to be passed on the command line +# with -Djava.security.policy=somefile. Comment out this line to disable +# this feature. +# +policy.allowSystemProperty=true + +# whether or not we look into the IdentityScope for trusted Identities +# when encountering a 1.1 signed JAR file. If the identity is found +# and is trusted, we grant it AllPermission. Note: the default policy +# provider (sun.security.provider.PolicyFile) does not support this property. +# +policy.ignoreIdentityScope=false + +# +# Default keystore type. +# +keystore.type=pkcs12 + +# +# Controls compatibility mode for JKS and PKCS12 keystore types. +# +# When set to 'true', both JKS and PKCS12 keystore types support loading +# keystore files in either JKS or PKCS12 format. When set to 'false' the +# JKS keystore type supports loading only JKS keystore files and the PKCS12 +# keystore type supports loading only PKCS12 keystore files. +# +keystore.type.compat=true + +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when passed to the +# SecurityManager::checkPackageAccess method unless the corresponding +# RuntimePermission("accessClassInPackage."+package) has been granted. +# +package.access=sun.misc.,\ + sun.reflect.,\ + org.GNOME.Accessibility. + +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when passed to the +# SecurityManager::checkPackageDefinition method unless the corresponding +# RuntimePermission("defineClassInPackage."+package) has been granted. +# +# By default, none of the class loaders supplied with the JDK call +# checkPackageDefinition. +# +package.definition=sun.misc.,\ + sun.reflect. + +# +# Determines whether this properties file can be appended to +# or overridden on the command line via -Djava.security.properties +# +security.overridePropertiesFile=true + +# +# Determines the default key and trust manager factory algorithms for +# the javax.net.ssl package. +# +ssl.KeyManagerFactory.algorithm=BCFKS +ssl.TrustManagerFactory.algorithm=PKIX + +# +# The Java-level namelookup cache policy for successful lookups: +# +# any negative value: caching forever +# any positive value: the number of seconds to cache an address for +# zero: do not cache +# +# default value is forever (FOREVER). For security reasons, this +# caching is made forever when a security manager is set. When a security +# manager is not set, the default behavior in this implementation +# is to cache for 30 seconds. +# +# NOTE: setting this to anything other than the default value can have +# serious security implications. Do not set it unless +# you are sure you are not exposed to DNS spoofing attack. +# +#networkaddress.cache.ttl=-1 + +# The Java-level namelookup cache policy for failed lookups: +# +# any negative value: cache forever +# any positive value: the number of seconds to cache negative lookup results +# zero: do not cache +# +# In some Microsoft Windows networking environments that employ +# the WINS name service in addition to DNS, name service lookups +# that fail may take a noticeably long time to return (approx. 5 seconds). +# For this reason the default caching policy is to maintain these +# results for 10 seconds. +# +networkaddress.cache.negative.ttl=10 + +# +# Properties to configure OCSP for certificate revocation checking +# + +# Enable OCSP +# +# By default, OCSP is not used for certificate revocation checking. +# This property enables the use of OCSP when set to the value "true". +# +# NOTE: SocketPermission is required to connect to an OCSP responder. +# +# Example, +# ocsp.enable=true + +# +# Location of the OCSP responder +# +# By default, the location of the OCSP responder is determined implicitly +# from the certificate being validated. This property explicitly specifies +# the location of the OCSP responder. The property is used when the +# Authority Information Access extension (defined in RFC 5280) is absent +# from the certificate or when it requires overriding. +# +# Example, +# ocsp.responderURL=http://ocsp.example.net:80 + +# +# Subject name of the OCSP responder's certificate +# +# By default, the certificate of the OCSP responder is that of the issuer +# of the certificate being validated. This property identifies the certificate +# of the OCSP responder when the default does not apply. Its value is a string +# distinguished name (defined in RFC 2253) which identifies a certificate in +# the set of certificates supplied during cert path validation. In cases where +# the subject name alone is not sufficient to uniquely identify the certificate +# then both the "ocsp.responderCertIssuerName" and +# "ocsp.responderCertSerialNumber" properties must be used instead. When this +# property is set then those two properties are ignored. +# +# Example, +# ocsp.responderCertSubjectName=CN=OCSP Responder, O=XYZ Corp + +# +# Issuer name of the OCSP responder's certificate +# +# By default, the certificate of the OCSP responder is that of the issuer +# of the certificate being validated. This property identifies the certificate +# of the OCSP responder when the default does not apply. Its value is a string +# distinguished name (defined in RFC 2253) which identifies a certificate in +# the set of certificates supplied during cert path validation. When this +# property is set then the "ocsp.responderCertSerialNumber" property must also +# be set. When the "ocsp.responderCertSubjectName" property is set then this +# property is ignored. +# +# Example, +# ocsp.responderCertIssuerName=CN=Enterprise CA, O=XYZ Corp + +# +# Serial number of the OCSP responder's certificate +# +# By default, the certificate of the OCSP responder is that of the issuer +# of the certificate being validated. This property identifies the certificate +# of the OCSP responder when the default does not apply. Its value is a string +# of hexadecimal digits (colon or space separators may be present) which +# identifies a certificate in the set of certificates supplied during cert path +# validation. When this property is set then the "ocsp.responderCertIssuerName" +# property must also be set. When the "ocsp.responderCertSubjectName" property +# is set then this property is ignored. +# +# Example, +# ocsp.responderCertSerialNumber=2A:FF:00 + +# +# Policy for failed Kerberos KDC lookups: +# +# When a KDC is unavailable (network error, service failure, etc), it is +# put inside a blacklist and accessed less often for future requests. The +# value (case-insensitive) for this policy can be: +# +# tryLast +# KDCs in the blacklist are always tried after those not on the list. +# +# tryLess[:max_retries,timeout] +# KDCs in the blacklist are still tried by their order in the configuration, +# but with smaller max_retries and timeout values. max_retries and timeout +# are optional numerical parameters (default 1 and 5000, which means once +# and 5 seconds). Please notes that if any of the values defined here is +# more than what is defined in krb5.conf, it will be ignored. +# +# Whenever a KDC is detected as available, it is removed from the blacklist. +# The blacklist is reset when krb5.conf is reloaded. You can add +# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is +# reloaded whenever a JAAS authentication is attempted. +# +# Example, +# krb5.kdc.bad.policy = tryLast +# krb5.kdc.bad.policy = tryLess:2,2000 +# +krb5.kdc.bad.policy = tryLast + +# +# Algorithm restrictions for certification path (CertPath) processing +# +# In some environments, certain algorithms or key lengths may be undesirable +# for certification path building and validation. For example, "MD2" is +# generally no longer considered to be a secure hash algorithm. This section +# describes the mechanism for disabling algorithms based on algorithm name +# and/or key length. This includes algorithms used in certificates, as well +# as revocation information such as CRLs and signed OCSP Responses. +# The syntax of the disabled algorithm string is described as follows: +# DisabledAlgorithms: +# " DisabledAlgorithm { , DisabledAlgorithm } " +# +# DisabledAlgorithm: +# AlgorithmName [Constraint] { '&' Constraint } +# +# AlgorithmName: +# (see below) +# +# Constraint: +# KeySizeConstraint | CAConstraint | DenyAfterConstraint | +# UsageConstraint +# +# KeySizeConstraint: +# keySize Operator KeyLength +# +# Operator: +# <= | < | == | != | >= | > +# +# KeyLength: +# Integer value of the algorithm's key length in bits +# +# CAConstraint: +# jdkCA +# +# DenyAfterConstraint: +# denyAfter YYYY-MM-DD +# +# UsageConstraint: +# usage [TLSServer] [TLSClient] [SignedJAR] +# +# The "AlgorithmName" is the standard algorithm name of the disabled +# algorithm. See "Java Cryptography Architecture Standard Algorithm Name +# Documentation" for information about Standard Algorithm Names. Matching +# is performed using a case-insensitive sub-element matching rule. (For +# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and +# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a +# sub-element of the certificate algorithm name, the algorithm will be +# rejected during certification path building and validation. For example, +# the assertion algorithm name "DSA" will disable all certificate algorithms +# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion +# will not disable algorithms related to "ECDSA". +# +# A "Constraint" defines restrictions on the keys and/or certificates for +# a specified AlgorithmName: +# +# KeySizeConstraint: +# keySize Operator KeyLength +# The constraint requires a key of a valid size range if the +# "AlgorithmName" is of a key algorithm. The "KeyLength" indicates +# the key size specified in number of bits. For example, +# "RSA keySize <= 1024" indicates that any RSA key with key size less +# than or equal to 1024 bits should be disabled, and +# "RSA keySize < 1024, RSA keySize > 2048" indicates that any RSA key +# with key size less than 1024 or greater than 2048 should be disabled. +# This constraint is only used on algorithms that have a key size. +# +# CAConstraint: +# jdkCA +# This constraint prohibits the specified algorithm only if the +# algorithm is used in a certificate chain that terminates at a marked +# trust anchor in the lib/security/cacerts keystore. If the jdkCA +# constraint is not set, then all chains using the specified algorithm +# are restricted. jdkCA may only be used once in a DisabledAlgorithm +# expression. +# Example: To apply this constraint to SHA-1 certificates, include +# the following: "SHA1 jdkCA" +# +# DenyAfterConstraint: +# denyAfter YYYY-MM-DD +# This constraint prohibits a certificate with the specified algorithm +# from being used after the date regardless of the certificate's +# validity. JAR files that are signed and timestamped before the +# constraint date with certificates containing the disabled algorithm +# will not be restricted. The date is processed in the UTC timezone. +# This constraint can only be used once in a DisabledAlgorithm +# expression. +# Example: To deny usage of RSA 2048 bit certificates after Feb 3 2020, +# use the following: "RSA keySize == 2048 & denyAfter 2020-02-03" +# +# UsageConstraint: +# usage [TLSServer] [TLSClient] [SignedJAR] +# This constraint prohibits the specified algorithm for +# a specified usage. This should be used when disabling an algorithm +# for all usages is not practical. 'TLSServer' restricts the algorithm +# in TLS server certificate chains when server authentication is +# performed. 'TLSClient' restricts the algorithm in TLS client +# certificate chains when client authentication is performed. +# 'SignedJAR' constrains use of certificates in signed jar files. +# The usage type follows the keyword and more than one usage type can +# be specified with a whitespace delimiter. +# Example: "SHA1 usage TLSServer TLSClient" +# +# When an algorithm must satisfy more than one constraint, it must be +# delimited by an ampersand '&'. For example, to restrict certificates in a +# chain that terminate at a distribution provided trust anchor and contain +# RSA keys that are less than or equal to 1024 bits, add the following +# constraint: "RSA keySize <= 1024 & jdkCA". +# +# All DisabledAlgorithms expressions are processed in the order defined in the +# property. This requires lower keysize constraints to be specified +# before larger keysize constraints of the same algorithm. For example: +# "RSA keySize < 1024 & jdkCA, RSA keySize < 2048". +# +# Note: The algorithm restrictions do not apply to trust anchors or +# self-signed certificates. +# +# Note: This property is currently used by Oracle's PKIX implementation. It +# is not guaranteed to be examined and used by other implementations. +# +# Example: +# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048 +# +# +jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \ + RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224 + +# +# Algorithm restrictions for signed JAR files +# +# In some environments, certain algorithms or key lengths may be undesirable +# for signed JAR validation. For example, "MD2" is generally no longer +# considered to be a secure hash algorithm. This section describes the +# mechanism for disabling algorithms based on algorithm name and/or key length. +# JARs signed with any of the disabled algorithms or key sizes will be treated +# as unsigned. +# +# The syntax of the disabled algorithm string is described as follows: +# DisabledAlgorithms: +# " DisabledAlgorithm { , DisabledAlgorithm } " +# +# DisabledAlgorithm: +# AlgorithmName [Constraint] { '&' Constraint } +# +# AlgorithmName: +# (see below) +# +# Constraint: +# KeySizeConstraint | DenyAfterConstraint +# +# KeySizeConstraint: +# keySize Operator KeyLength +# +# DenyAfterConstraint: +# denyAfter YYYY-MM-DD +# +# Operator: +# <= | < | == | != | >= | > +# +# KeyLength: +# Integer value of the algorithm's key length in bits +# +# Note: This property is currently used by the JDK Reference +# implementation. It is not guaranteed to be examined and used by other +# implementations. +# +# See "jdk.certpath.disabledAlgorithms" for syntax descriptions. +# +jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \ + DSA keySize < 1024 + +# +# Algorithm restrictions for Secure Socket Layer/Transport Layer Security +# (SSL/TLS/DTLS) processing +# +# In some environments, certain algorithms or key lengths may be undesirable +# when using SSL/TLS/DTLS. This section describes the mechanism for disabling +# algorithms during SSL/TLS/DTLS security parameters negotiation, including +# protocol version negotiation, cipher suites selection, peer authentication +# and key exchange mechanisms. +# +# Disabled algorithms will not be negotiated for SSL/TLS connections, even +# if they are enabled explicitly in an application. +# +# For PKI-based peer authentication and key exchange mechanisms, this list +# of disabled algorithms will also be checked during certification path +# building and validation, including algorithms used in certificates, as +# well as revocation information such as CRLs and signed OCSP Responses. +# This is in addition to the jdk.certpath.disabledAlgorithms property above. +# +# See the specification of "jdk.certpath.disabledAlgorithms" for the +# syntax of the disabled algorithm string. +# +# Note: The algorithm restrictions do not apply to trust anchors or +# self-signed certificates. +# +# Note: This property is currently used by the JDK Reference implementation. +# It is not guaranteed to be examined and used by other implementations. +# +# Example: +# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048 +jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \ + EC keySize < 224, 3DES_EDE_CBC, anon, NULL + +# +# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS) +# processing in JSSE implementation. +# +# In some environments, a certain algorithm may be undesirable but it +# cannot be disabled because of its use in legacy applications. Legacy +# algorithms may still be supported, but applications should not use them +# as the security strength of legacy algorithms are usually not strong enough +# in practice. +# +# During SSL/TLS security parameters negotiation, legacy algorithms will +# not be negotiated unless there are no other candidates. +# +# The syntax of the legacy algorithms string is described as this Java +# BNF-style: +# LegacyAlgorithms: +# " LegacyAlgorithm { , LegacyAlgorithm } " +# +# LegacyAlgorithm: +# AlgorithmName (standard JSSE algorithm name) +# +# See the specification of security property "jdk.certpath.disabledAlgorithms" +# for the syntax and description of the "AlgorithmName" notation. +# +# Per SSL/TLS specifications, cipher suites have the form: +# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg +# or +# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg +# +# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the +# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC +# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest +# algorithm for HMAC. +# +# The LegacyAlgorithm can be one of the following standard algorithm names: +# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA +# 2. JSSE key exchange algorithm name, e.g., RSA +# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC +# 4. JSSE message digest algorithm name, e.g., SHA +# +# See SSL/TLS specifications and "Java Cryptography Architecture Standard +# Algorithm Name Documentation" for information about the algorithm names. +# +# Note: If a legacy algorithm is also restricted through the +# jdk.tls.disabledAlgorithms property or the +# java.security.AlgorithmConstraints API (See +# javax.net.ssl.SSLParameters.setAlgorithmConstraints()), +# then the algorithm is completely disabled and will not be negotiated. +# +# Note: This property is currently used by the JDK Reference implementation. +# It is not guaranteed to be examined and used by other implementations. +# There is no guarantee the property will continue to exist or be of the +# same syntax in future releases. +# +# Example: +# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5 +# +jdk.tls.legacyAlgorithms= \ + K_NULL, C_NULL, M_NULL, \ + DH_anon, ECDH_anon, \ + RC4_128, RC4_40, DES_CBC, DES40_CBC, \ + 3DES_EDE_CBC + +# +# The pre-defined default finite field Diffie-Hellman ephemeral (DHE) +# parameters for Transport Layer Security (SSL/TLS/DTLS) processing. +# +# In traditional SSL/TLS/DTLS connections where finite field DHE parameters +# negotiation mechanism is not used, the server offers the client group +# parameters, base generator g and prime modulus p, for DHE key exchange. +# It is recommended to use dynamic group parameters. This property defines +# a mechanism that allows you to specify custom group parameters. +# +# The syntax of this property string is described as this Java BNF-style: +# DefaultDHEParameters: +# DefinedDHEParameters { , DefinedDHEParameters } +# +# DefinedDHEParameters: +# "{" DHEPrimeModulus , DHEBaseGenerator "}" +# +# DHEPrimeModulus: +# HexadecimalDigits +# +# DHEBaseGenerator: +# HexadecimalDigits +# +# HexadecimalDigits: +# HexadecimalDigit { HexadecimalDigit } +# +# HexadecimalDigit: one of +# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f +# +# Whitespace characters are ignored. +# +# The "DefinedDHEParameters" defines the custom group parameters, prime +# modulus p and base generator g, for a particular size of prime modulus p. +# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the +# "DHEBaseGenerator" defines the hexadecimal base generator g of a group +# parameter. It is recommended to use safe primes for the custom group +# parameters. +# +# If this property is not defined or the value is empty, the underlying JSSE +# provider's default group parameter is used for each connection. +# +# If the property value does not follow the grammar, or a particular group +# parameter is not valid, the connection will fall back and use the +# underlying JSSE provider's default group parameter. +# +# Note: This property is currently used by OpenJDK's JSSE implementation. It +# is not guaranteed to be examined and used by other implementations. +# +# Example: +# jdk.tls.server.defaultDHEParameters= +# { \ +# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \ +# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \ +# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \ +# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \ +# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \ +# FFFFFFFF FFFFFFFF, 2} + +# +# TLS key limits on symmetric cryptographic algorithms +# +# This security property sets limits on algorithms key usage in TLS 1.3. +# When the amount of data encrypted exceeds the algorithm value listed below, +# a KeyUpdate message will trigger a key change. This is for symmetric ciphers +# with TLS 1.3 only. +# +# The syntax for the property is described below: +# KeyLimits: +# " KeyLimit { , KeyLimit } " +# +# WeakKeyLimit: +# AlgorithmName Action Length +# +# AlgorithmName: +# A full algorithm transformation. +# +# Action: +# KeyUpdate +# +# Length: +# The amount of encrypted data in a session before the Action occurs +# This value may be an integer value in bytes, or as a power of two, 2^29. +# +# KeyUpdate: +# The TLS 1.3 KeyUpdate handshake process begins when the Length amount +# is fulfilled. +# +# Note: This property is currently used by OpenJDK's JSSE implementation. It +# is not guaranteed to be examined and used by other implementations. +# +jdk.tls.keyLimits=AES/GCM/NoPadding KeyUpdate 2^37 + +# +# Cryptographic Jurisdiction Policy defaults +# +# Import and export control rules on cryptographic software vary from +# country to country. By default, Java provides two different sets of +# cryptographic policy files[1]: +# +# unlimited: These policy files contain no restrictions on cryptographic +# strengths or algorithms +# +# limited: These policy files contain more restricted cryptographic +# strengths +# +# The default setting is determined by the value of the "crypto.policy" +# Security property below. If your country or usage requires the +# traditional restrictive policy, the "limited" Java cryptographic +# policy is still available and may be appropriate for your environment. +# +# If you have restrictions that do not fit either use case mentioned +# above, Java provides the capability to customize these policy files. +# The "crypto.policy" security property points to a subdirectory +# within /conf/security/policy/ which can be customized. +# Please see the /conf/security/policy/README.txt file or consult +# the Java Security Guide/JCA documentation for more information. +# +# YOU ARE ADVISED TO CONSULT YOUR EXPORT/IMPORT CONTROL COUNSEL OR ATTORNEY +# TO DETERMINE THE EXACT REQUIREMENTS. +# +# [1] Please note that the JCE for Java SE, including the JCE framework, +# cryptographic policy files, and standard JCE providers provided with +# the Java SE, have been reviewed and approved for export as mass market +# encryption item by the US Bureau of Industry and Security. +# +# Note: This property is currently used by the JDK Reference implementation. +# It is not guaranteed to be examined and used by other implementations. +# +crypto.policy=unlimited + +# +# The policy for the XML Signature secure validation mode. The mode is +# enabled by setting the property "org.jcp.xml.dsig.secureValidation" to +# true with the javax.xml.crypto.XMLCryptoContext.setProperty() method, +# or by running the code with a SecurityManager. +# +# Policy: +# Constraint {"," Constraint } +# Constraint: +# AlgConstraint | MaxTransformsConstraint | MaxReferencesConstraint | +# ReferenceUriSchemeConstraint | KeySizeConstraint | OtherConstraint +# AlgConstraint +# "disallowAlg" Uri +# MaxTransformsConstraint: +# "maxTransforms" Integer +# MaxReferencesConstraint: +# "maxReferences" Integer +# ReferenceUriSchemeConstraint: +# "disallowReferenceUriSchemes" String { String } +# KeySizeConstraint: +# "minKeySize" KeyAlg Integer +# OtherConstraint: +# "noDuplicateIds" | "noRetrievalMethodLoops" +# +# For AlgConstraint, Uri is the algorithm URI String that is not allowed. +# See the XML Signature Recommendation for more information on algorithm +# URI Identifiers. For KeySizeConstraint, KeyAlg is the standard algorithm +# name of the key type (ex: "RSA"). If the MaxTransformsConstraint, +# MaxReferencesConstraint or KeySizeConstraint (for the same key type) is +# specified more than once, only the last entry is enforced. +# +# Note: This property is currently used by the JDK Reference implementation. It +# is not guaranteed to be examined and used by other implementations. +# +jdk.xml.dsig.secureValidationPolicy=\ + disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ + disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ + disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ + disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ + maxTransforms 5,\ + maxReferences 30,\ + disallowReferenceUriSchemes file http https,\ + minKeySize RSA 1024,\ + minKeySize DSA 1024,\ + minKeySize EC 224,\ + noDuplicateIds,\ + noRetrievalMethodLoops + +# +# Serialization process-wide filter +# +# A filter, if configured, is used by java.io.ObjectInputStream during +# deserialization to check the contents of the stream. +# A filter is configured as a sequence of patterns, each pattern is either +# matched against the name of a class in the stream or defines a limit. +# Patterns are separated by ";" (semicolon). +# Whitespace is significant and is considered part of the pattern. +# +# If the system property jdk.serialFilter is also specified, it supersedes +# the security property value defined here. +# +# If a pattern includes a "=", it sets a limit. +# If a limit appears more than once the last value is used. +# Limits are checked before classes regardless of the order in the +# sequence of patterns. +# If any of the limits are exceeded, the filter status is REJECTED. +# +# maxdepth=value - the maximum depth of a graph +# maxrefs=value - the maximum number of internal references +# maxbytes=value - the maximum number of bytes in the input stream +# maxarray=value - the maximum array length allowed +# +# Other patterns, from left to right, match the class or package name as +# returned from Class.getName. +# If the class is an array type, the class or package to be matched is the +# element type. +# Arrays of any number of dimensions are treated the same as the element type. +# For example, a pattern of "!example.Foo", rejects creation of any instance or +# array of example.Foo. +# +# If the pattern starts with "!", the status is REJECTED if the remaining +# pattern is matched; otherwise the status is ALLOWED if the pattern matches. +# If the pattern contains "/", the non-empty prefix up to the "/" is the +# module name; +# if the module name matches the module name of the class then +# the remaining pattern is matched with the class name. +# If there is no "/", the module name is not compared. +# If the pattern ends with ".**" it matches any class in the package and all +# subpackages. +# If the pattern ends with ".*" it matches any class in the package. +# If the pattern ends with "*", it matches any class with the pattern as a +# prefix. +# If the pattern is equal to the class name, it matches. +# Otherwise, the status is UNDECIDED. +# +#jdk.serialFilter=pattern;pattern + +# +# RMI Registry Serial Filter +# +# The filter pattern uses the same format as jdk.serialFilter. +# This filter can override the builtin filter if additional types need to be +# allowed or rejected from the RMI Registry or to decrease limits but not +# to increase limits. +# If the limits (maxdepth, maxrefs, or maxbytes) are exceeded, the object is rejected. +# +# Each non-array type is allowed or rejected if it matches one of the patterns, +# evaluated from left to right, and is otherwise allowed. Arrays of any +# component type, including subarrays and arrays of primitives, are allowed. +# +# Array construction of any component type, including subarrays and arrays of +# primitives, are allowed unless the length is greater than the maxarray limit. +# The filter is applied to each array element. +# +# Note: This property is currently used by the JDK Reference implementation. +# It is not guaranteed to be examined and used by other implementations. +# +# The built-in filter allows subclasses of allowed classes and +# can approximately be represented as the pattern: +# +#sun.rmi.registry.registryFilter=\ +# maxarray=1000000;\ +# maxdepth=20;\ +# java.lang.String;\ +# java.lang.Number;\ +# java.lang.reflect.Proxy;\ +# java.rmi.Remote;\ +# sun.rmi.server.UnicastRef;\ +# sun.rmi.server.RMIClientSocketFactory;\ +# sun.rmi.server.RMIServerSocketFactory;\ +# java.rmi.activation.ActivationID;\ +# java.rmi.server.UID +# +# RMI Distributed Garbage Collector (DGC) Serial Filter +# +# The filter pattern uses the same format as jdk.serialFilter. +# This filter can override the builtin filter if additional types need to be +# allowed or rejected from the RMI DGC. +# +# Note: This property is currently used by the JDK Reference implementation. +# It is not guaranteed to be examined and used by other implementations. +# +# The builtin DGC filter can approximately be represented as the filter pattern: +# +#sun.rmi.transport.dgcFilter=\ +# java.rmi.server.ObjID;\ +# java.rmi.server.UID;\ +# java.rmi.dgc.VMID;\ +# java.rmi.dgc.Lease;\ +# maxdepth=5;maxarray=10000 + +# CORBA ORBIorTypeCheckRegistryFilter +# Type check enhancement for ORB::string_to_object processing +# +# An IOR type check filter, if configured, is used by an ORB during +# an ORB::string_to_object invocation to check the veracity of the type encoded +# in the ior string. +# +# The filter pattern consists of a semi-colon separated list of class names. +# The configured list contains the binary class names of the IDL interface types +# corresponding to the IDL stub class to be instantiated. +# As such, a filter specifies a list of IDL stub classes that will be +# allowed by an ORB when an ORB::string_to_object is invoked. +# It is used to specify a white list configuration of acceptable +# IDL stub types which may be contained in a stringified IOR +# parameter passed as input to an ORB::string_to_object method. +# +# Note: This property is currently used by the JDK Reference implementation. +# It is not guaranteed to be examined and used by other implementations. +# +#com.sun.CORBA.ORBIorTypeCheckRegistryFilter=binary_class_name;binary_class_name + +# +# JCEKS Encrypted Key Serial Filter +# +# This filter, if configured, is used by the JCEKS KeyStore during the +# deserialization of the encrypted Key object stored inside a key entry. +# If not configured or the filter result is UNDECIDED (i.e. none of the patterns +# matches), the filter configured by jdk.serialFilter will be consulted. +# +# If the system property jceks.key.serialFilter is also specified, it supersedes +# the security property value defined here. +# +# The filter pattern uses the same format as jdk.serialFilter. The default +# pattern allows java.lang.Enum, java.security.KeyRep, java.security.KeyRep$Type, +# and javax.crypto.spec.SecretKeySpec and rejects all the others. +jceks.key.serialFilter = java.base/java.lang.Enum;java.base/java.security.KeyRep;\ + java.base/java.security.KeyRep$Type;java.base/javax.crypto.spec.SecretKeySpec;!* + +# +# Enhanced exception message information +# +# By default, exception messages should not include potentially sensitive +# information such as file names, host names, or port numbers. This property +# accepts one or more comma separated values, each of which represents a +# category of enhanced exception message information to enable. Values are +# case-insensitive. Leading and trailing whitespaces, surrounding each value, +# are ignored. Unknown values are ignored. +# +# NOTE: Use caution before setting this property. Setting this property +# exposes sensitive information in Exceptions, which could, for example, +# propagate to untrusted code or be emitted in stack traces that are +# inadvertently disclosed and made accessible over a public network. +# +# The categories are: +# +# hostInfo - IOExceptions thrown by java.net.Socket and the socket types in the +# java.nio.channels package will contain enhanced exception +# message information +# +# The property setting in this file can be overridden by a system property of +# the same name, with the same syntax and possible values. +# +#jdk.includeInExceptions=hostInfo + +# +# Policies for distrusting Certificate Authorities (CAs). +# +# This is a comma separated value of one or more case-sensitive strings, each +# of which represents a policy for determining if a CA should be distrusted. +# The supported values are: +# +# SYMANTEC_TLS : Distrust TLS Server certificates anchored by a Symantec +# root CA and issued after April 16, 2019 unless issued by one of the +# following subordinate CAs which have a later distrust date: +# 1. Apple IST CA 2 - G1, SHA-256 fingerprint: +# AC2B922ECFD5E01711772FEA8ED372DE9D1E2245FCE3F57A9CDBEC77296A424B +# Distrust after December 31, 2019. +# 2. Apple IST CA 8 - G1, SHA-256 fingerprint: +# A4FE7C7F15155F3F0AEF7AAA83CF6E06DEB97CA3F909DF920AC1490882D488ED +# Distrust after December 31, 2019. +# +# Leading and trailing whitespace surrounding each value are ignored. +# Unknown values are ignored. If the property is commented out or set to the +# empty String, no policies are enforced. +# +# Note: This property is currently used by the JDK Reference implementation. +# It is not guaranteed to be supported by other SE implementations. Also, this +# property does not override other security properties which can restrict +# certificates such as jdk.tls.disabledAlgorithms or +# jdk.certpath.disabledAlgorithms; those restrictions are still enforced even +# if this property is not enabled. +# +jdk.security.caDistrustPolicies=SYMANTEC_TLS + diff --git a/dev-resources/ssl/ca.pem b/dev-resources/ssl/ca.pem index 2e30368..cb90cfc 100644 --- a/dev-resources/ssl/ca.pem +++ b/dev-resources/ssl/ca.pem @@ -1,35 +1,21 @@ -----BEGIN CERTIFICATE----- -MIIGCzCCA/OgAwIBAgIBATANBgkqhkiG9w0BAQsFADBVMVMwUQYDVQQDDEpQdXBw -ZXQgRW50ZXJwcmlzZSBDQSBnZW5lcmF0ZWQgb24gY2VudG9zNy52bSBhdCArMjAx -OC0wMS0wMiAxOTo0NzozMyArMDAwMDAeFw0xODAxMDExOTQ4MThaFw0yMzAxMDEx -OTQ4MThaMFUxUzBRBgNVBAMMSlB1cHBldCBFbnRlcnByaXNlIENBIGdlbmVyYXRl -ZCBvbiBjZW50b3M3LnZtIGF0ICsyMDE4LTAxLTAyIDE5OjQ3OjMzICswMDAwMIIC -IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1mZIjkBpXzWY0Etw5jWOSWmv -YuoJWxpAcpl9exw/hhMf/4gaqOv1Xa6s200+xAZsohuUk6qyZfg62PGuH9lTcd6o -RE8+FB7GYi+Io8xKrkifNAJWHZimA8rBn4lyBtwIfxC3zjEJZo7u7zNwahZc1+kH -Byu8jUASnNLcUE3+WSs9tOXSCMY8ewu5FinFi5oNiAULkrxUxgJz/Sahr/AIDiJO -Mwfl+1Bj2DS4TZCKZK1zHLw5kxKJjkvdM6YentetsbppwL+YPmLrG/MuB3ftlNqZ -G3tuRBrFWgHVKoXkaySyWuOWyvEMiYmsj/3R53eo6fsEQs/co0J3zZo84ydGG+yD -/g1BbXk+Gk7nes6Twl6/QVUKq/Q5xgIe+qEL1ufFdV9WWHGNA89Rwm08W+WUu9A6 -0bUJRQvzPat3SNq79AYJCEj+bwTU65neXreKswqRnsysKzrPjlOz37QF6+qUHORN -M0QiL+H3442+84O/aSk/0YI2fE9X/0ekw97XaRavBp6EX/ltaMdyPVW0iyf26Bpk -fans7qajVhyaAmtKUMDdzWxZMG3kVH22+aYbSImwBJaaLqowM2RlCkjs1ui76bui -F7B8EmJZLHTC1qt1Sz6fSVVmpLu19vcadqpSHvRE0vYFQPPGqseJwh3A6y4LA3Yo -PxlDXBXSiFS6j/JbGUUCAwEAAaOB5TCB4jA3BglghkgBhvhCAQ0EKgwoUHVwcGV0 -IFJ1YnkvT3BlblNTTCBJbnRlcm5hbCBDZXJ0aWZpY2F0ZTAOBgNVHQ8BAf8EBAMC -AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUbc/TLNk6zyecUfKnzNX+alop -NpcwZwYDVR0jBGAwXqFZpFcwVTFTMFEGA1UEAwxKUHVwcGV0IEVudGVycHJpc2Ug -Q0EgZ2VuZXJhdGVkIG9uIGNlbnRvczcudm0gYXQgKzIwMTgtMDEtMDIgMTk6NDc6 -MzMgKzAwMDCCAQEwDQYJKoZIhvcNAQELBQADggIBACkWc3RKTYxBP/uP0m88F8OP -GdwKJKQFek2MS9nbFKp4c5aErhEPGw5wDCoQvhUUcdD6e8THGiquauZ/xdCNukX/ -Q61g05h0rzyAdJLVkREUosQzCPBNnPg7Mnun2w7ImKh79R9RLw5yRCxgLYjs2fua -x9g5QawS9RrYAdW9EUgmLtz7cS9+gg2FhdE/xYuQ+gQOq44i3+4U4ZWJO7qmC/SG -Aqos6+N8cbufuAnRf8t/84rFMcBSseNsykP/TU0I72A4dytJpBd6I8J/Gizo+b03 -xr0QhCtVI8AVL+yhU5LSbmbFgtOYX/mUpDOGxKJgs3LDE9dhVce5RRgj53itSPjU -me5pgnBH7fkHkWFj15R2gJgOOYqMW454vKhUEJSb59y3/1eK1nS/JwoXjifSacLJ -s0eewrOaX53U0Agdgdyu2hAQgRHwQJgGLv+H3rRyyyx4TcoQhBpnVzE1LwtA0Unn -h2zsszRCpcA1vN7yTmyAUyHyHMhXlJLZ6ryH6GSycXJtc4SI15YTGlLmIr12ziSl -CmN6+R7mOL/3PNrhwuxDUTMKAL+/Ir6HHSnj0vXnnOohZpHXHPaxsc9Qctso978R -dlbk8jv3D28gOrXccwKOnYAwHM8m6VG5ZxGHO1FfwB8YDsS337ajfhX5mePL2UWS -sg+BZ6FhveVHc1uEgbTt +MIIDdzCCAl+gAwIBAgIUDJYUyp0efmPLt+DliGoXU47jk8AwDQYJKoZIhvcNAQEL +BQAwSzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk9SMREwDwYDVQQHDAhQb3J0bGFu +ZDEPMA0GA1UECgwGUHVwcGV0MQswCQYDVQQDDAJjYTAeFw0yMzA2MjAyMDQ0MzNa +Fw0yNzA2MTkyMDQ0MzNaMEsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJPUjERMA8G +A1UEBwwIUG9ydGxhbmQxDzANBgNVBAoMBlB1cHBldDELMAkGA1UEAwwCY2EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpUdNnM0gmlgp8Ndf0DxuPpo4E +ATIgTTvZYFfuGvImFyb81BA1/d6Dz94rHCF1pX32yn852At8UTqLRuB1el85iZ+q +SLTh+Af4o0P641U//crbsV3Yp98Y0Lz+jJGItyzRkVoKq7qQMCpzSywSdEKSlqwz +SGxJLY7w5+qfo/kXskI54nkGRuPlq1t0TYS33VQ7+eJRsR97yMo3kiX6gyBjnKhE +nEGkliyms1I5q53f7mYVUjaCUyzxno3RcD3ARZ3/ZtM7zpmtvrSp18ei9jdlrW9y +UcSqAHKEq0KTu72tbEGy/skcQMluEEWs4A/zMIIUnSQXjLZ5hvoYZDGLAapNAgMB +AAGjUzBRMB0GA1UdDgQWBBQ9bGLAJw1nDiaM56J4KqMipIVDPjAfBgNVHSMEGDAW +gBQ9bGLAJw1nDiaM56J4KqMipIVDPjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQAPTAksFtWnpcEXJ1A37AWRspjB1hz+Ss+WJSrp+i4nAzUjUqB4 +5a8NmqXxhy/0picDdvT1+oN21SYWlaGaG3OU8AZaOcwJdOjAz9P5rkSnUDDZHdwx +Xd51c0rovUEDbbda57we8+TUDgjJqkUt2ebN/kwVkQ/YFGZyLmAjHie/PFP+mX3O +gBmLuD1OpU66fqHkRmDaFGDywpO7IunWKcU8ppwQG7XlsQPpEg7mNmS+sL0h7lHe +chJ+6DdloVaqsbVfSx31eM4x8iHrfqif9YBjt8g3wAMYd4a4WPVsCXQvp7Tyqpci +aLEJ9ZWG1IJoDQgys4wgEKlpszoinbfWAJCz -----END CERTIFICATE----- diff --git a/dev-resources/ssl/cert.pem b/dev-resources/ssl/cert.pem index 2b1cc39..2aa86e5 100644 --- a/dev-resources/ssl/cert.pem +++ b/dev-resources/ssl/cert.pem @@ -1,33 +1,19 @@ -----BEGIN CERTIFICATE----- -MIIFoTCCA4mgAwIBAgIBBTANBgkqhkiG9w0BAQsFADBVMVMwUQYDVQQDDEpQdXBw -ZXQgRW50ZXJwcmlzZSBDQSBnZW5lcmF0ZWQgb24gY2VudG9zNy52bSBhdCArMjAx -OC0wMS0wMiAxOTo0NzozMyArMDAwMDAeFw0xODAxMDEyMTExNDVaFw0yMzAxMDEy -MTExNDVaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAK2DUJH5QElXSkEMcuSfhYS4Pf6XKfrGu0z1OKbPlY+3zSbH -qIjuArR1fNw7EOk5PJRku0JnQTuzcu7i39FxzDHKnca+m0UjemDi9odzFGRhdEpg -NfDLGnLoAkWHs6tRsL24rnc9SySjZc6u+Nf7Jdv+rh6i5qkAby3Bp+lR9zhLBp7m -R/LkRQlK15iTXHlfdOuAifDzgtPxTHnwrWzuXvfel49x6yyahWdWnqNKl7e+naKK -j32laXxEHIq3FOTDCXZqYOHVWyGVd0cBKnJr1jaycBwZHEeHczHUsJUFyzcnhVGe -gOqs5CFc18j+joiQ+zkLXUOBc9RpOkqwZB6OjqdfgIJQdV/ER4LHkT2OZGAEt/e8 -tq+x1Pfwey0qiFuet7bgSDwbQ/5ZgBBpCvJPrYI9AiPiFLQcXB+79T2iaa6w7m3E -4VvpbUqFp9p38Fr/EiZ6X0CiPBq4j51FNNH8F0GyxBTO/yzFLEqyhm9+CxEnhlll -GmfCd4MNwdI5/3HsAlR+ksJwNxWQqY5PcafrzfT1dySHmxSjZ4aaNb24mpGSln7r -qhYRC6SQ+aJBwxi68dgz0UFME1fHv19nZMdiPhvdmLM2BW7a+gp6OFMoM+MmGMSF -tgWHNk1aNTTUfv9+OQ11JCX5oikXQYwPLWjDboUixn3VhRUTAjWxzvSvcI8TAgMB -AAGjgbwwgbkwNwYJYIZIAYb4QgENBCoMKFB1cHBldCBSdWJ5L09wZW5TU0wgSW50 -ZXJuYWwgQ2VydGlmaWNhdGUwDgYDVR0PAQH/BAQDAgWgMCAGA1UdJQEB/wQWMBQG -CCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQBQiU9 -MHqKu5IXojRDhPk2oIVgVTAfBgNVHSMEGDAWgBRtz9Ms2TrPJ5xR8qfM1f5qWik2 -lzANBgkqhkiG9w0BAQsFAAOCAgEAnEGeANnyRGR/SRAmrCmwlEDH6NdEDecl+FKn -JJXeb6z1csK3jp5AHvA9Et3PsFxjj4/CuLKjmdizo2VJJbqtUcSEujn02Z3FYW+q -UEqXqFV2zeBcoSrenUizTZHFQV5uV4RbA9nWNC0AixHHVQaaU0Cy7W9s+T+sooFX -jphgN0fow1a4jHm0gfmhdpJR01Zl/gCpZh3tIoG8Xz5cVisKPLWCamN4643B3EnE -SjxeRPP/WYlwV4LsOVWbM5bNoGceca4LpvL20F2umLOAqfXi8mVlgyoHqVD0muXu -3A9NDRmjx7YlG7e+vxtpgEUJ7tAwTA31j3IwTlFV8L9J/nrVJtrD90y7BQ9CgdKJ -UcBCZS/j6Ujc7RMrk9OA59KlkBI9KkwwFzyz6PBMBcieWUZ8bSLHQc799lx8Hqcd -hbGXIbES3JWw3QzCiNW/DiejF6+XSfUDji5N1k9n/1dqvP8ir4BwT/K9KKHwwCH6 -E+k8RLvfJW/IDkj/d8o1+n5Yp6vBSHUCULlWmS9/Fb6vJZBnIJ9xHVjUiODO4H+Q -EiAESrETqdwkCEbjOu3jKquLZzwViqllQWRJm2IHRCaVQXkfzBORdJcofZ0yASYK -djSFDzl5rDDtqTk5T6tvieeIZfK09s+0T4akPvqS88zFkcgjUqTRZaRbwM62Zw3P -IDIf6HA= +MIIDGjCCAgICAQEwDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCVVMxCzAJBgNV +BAgMAk9SMREwDwYDVQQHDAhQb3J0bGFuZDEPMA0GA1UECgwGUHVwcGV0MQswCQYD +VQQDDAJjYTAgFw0yMzA2MjAyMDQ3MDlaGA8yMTIzMDUyNzIwNDcwOVowWTELMAkG +A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0 +IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr2r+H5HCGihCfovuBuQULBvV1UMJipeVGPm7 +Lfs4B6pfxHBrNV1dejfmH8Vqs8DRTo5uHS8noodQfs/m0vBpqgKE4IPwzllE1+wY +pi7Kq2mX35PLn6aYMAPJSSnTdAaOPPss0eeVGkNFGHPI4qr4aspZC6e9QspkhKoU +ClDbLKYK9an61zbV4WeaFumdfli0uKR004lK9m9QnhLUmZ10KsY+4l9Nt3Vwflqi +h6vqjZ0Tm77wcu7768vKCv5xXid9wiBFRn0gYDm3+EnAo03VtE7pz8x754EVRIrX +hGBHxGFkGK1eRaUM0Q3FrJooITXCDcud+rfdetDvxt0ZcbabtQIDAQABMA0GCSqG +SIb3DQEBCwUAA4IBAQBn6R99/CW+XyxPKqhm/haUuzgX4FJqzrU/grju4nYj3K9l +Y094IOJNLNnxfQuRy1nAa8+cB+EDbA1Ct3wQ7p1AJgjTcdPagk5v/q3ZQ5V/hOY2 +W41yVyEiNWOm5j7aa8YDUog2SPbI7UM8+RnYK19yeqJOsPUUe1OKUfI84drcCH7l +gcQeVQYHbZiVX75MNOKOvur0oe72D1d36ZqZAA+xooM+wlrFB96ggBcqS07FMZQb +d+N7SDZbhfO4ljHPT/R5xd1yItf8UlTzhHeH7IhY/e+vFx2PsIVB2EBJyGG6w2ig +757z++jrjVtsBc+sElcIta0hIZbe95cQ6uGIJKJR -----END CERTIFICATE----- diff --git a/dev-resources/ssl/config/ca.pem b/dev-resources/ssl/config/ca.pem new file mode 100644 index 0000000..cb90cfc --- /dev/null +++ b/dev-resources/ssl/config/ca.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIUDJYUyp0efmPLt+DliGoXU47jk8AwDQYJKoZIhvcNAQEL +BQAwSzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk9SMREwDwYDVQQHDAhQb3J0bGFu +ZDEPMA0GA1UECgwGUHVwcGV0MQswCQYDVQQDDAJjYTAeFw0yMzA2MjAyMDQ0MzNa +Fw0yNzA2MTkyMDQ0MzNaMEsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJPUjERMA8G +A1UEBwwIUG9ydGxhbmQxDzANBgNVBAoMBlB1cHBldDELMAkGA1UEAwwCY2EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpUdNnM0gmlgp8Ndf0DxuPpo4E +ATIgTTvZYFfuGvImFyb81BA1/d6Dz94rHCF1pX32yn852At8UTqLRuB1el85iZ+q +SLTh+Af4o0P641U//crbsV3Yp98Y0Lz+jJGItyzRkVoKq7qQMCpzSywSdEKSlqwz +SGxJLY7w5+qfo/kXskI54nkGRuPlq1t0TYS33VQ7+eJRsR97yMo3kiX6gyBjnKhE +nEGkliyms1I5q53f7mYVUjaCUyzxno3RcD3ARZ3/ZtM7zpmtvrSp18ei9jdlrW9y +UcSqAHKEq0KTu72tbEGy/skcQMluEEWs4A/zMIIUnSQXjLZ5hvoYZDGLAapNAgMB +AAGjUzBRMB0GA1UdDgQWBBQ9bGLAJw1nDiaM56J4KqMipIVDPjAfBgNVHSMEGDAW +gBQ9bGLAJw1nDiaM56J4KqMipIVDPjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQAPTAksFtWnpcEXJ1A37AWRspjB1hz+Ss+WJSrp+i4nAzUjUqB4 +5a8NmqXxhy/0picDdvT1+oN21SYWlaGaG3OU8AZaOcwJdOjAz9P5rkSnUDDZHdwx +Xd51c0rovUEDbbda57we8+TUDgjJqkUt2ebN/kwVkQ/YFGZyLmAjHie/PFP+mX3O +gBmLuD1OpU66fqHkRmDaFGDywpO7IunWKcU8ppwQG7XlsQPpEg7mNmS+sL0h7lHe +chJ+6DdloVaqsbVfSx31eM4x8iHrfqif9YBjt8g3wAMYd4a4WPVsCXQvp7Tyqpci +aLEJ9ZWG1IJoDQgys4wgEKlpszoinbfWAJCz +-----END CERTIFICATE----- diff --git a/dev-resources/ssl/config/ca_req.pem b/dev-resources/ssl/config/ca_req.pem new file mode 100644 index 0000000..3bdffe5 --- /dev/null +++ b/dev-resources/ssl/config/ca_req.pem @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICzzCCAbcCAQAwSzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk9SMREwDwYDVQQH +DAhQb3J0bGFuZDEPMA0GA1UECgwGUHVwcGV0MQswCQYDVQQDDAJjYTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKlR02czSCaWCnw11/QPG4+mjgQBMiBN +O9lgV+4a8iYXJvzUEDX93oPP3iscIXWlffbKfznYC3xROotG4HV6XzmJn6pItOH4 +B/ijQ/rjVT/9ytuxXdin3xjQvP6MkYi3LNGRWgqrupAwKnNLLBJ0QpKWrDNIbEkt +jvDn6p+j+ReyQjnieQZG4+WrW3RNhLfdVDv54lGxH3vIyjeSJfqDIGOcqEScQaSW +LKazUjmrnd/uZhVSNoJTLPGejdFwPcBFnf9m0zvOma2+tKnXx6L2N2Wtb3JRxKoA +coSrQpO7va1sQbL+yRxAyW4QRazgD/MwghSdJBeMtnmG+hhkMYsBqk0CAwEAAaA/ +MD0GCSqGSIb3DQEJDjEwMC4wCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwFAYDVR0R +BA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQBguGpJPBgYHD7uCYs/ +3eDGT7bC7TQOShX4V8lBEyE4/i43z71lO+QBn2vLN8L4v4EWunp2QKvZQmXeWsd6 +LgIjs3UHY3PFUW2EOqI76FX98w7Ps+NZf39Wtc/9TgcqZKeQyUDVb9XCLJq9xH4A +6dgPiqaEGVIbMlaBcaBvbY1L5hDzeBw0aOkBhyI5Vh4YI4NBFQXnU3EXS9zrwNDw +PwClRH0htVtocPzIo/XXGvcX/lkynS4oojfmMJsPOfLLyYam2fliWGYHXpINym7W +sUR4qhimLzaSlinCpR90XygpWX0C/adoHZWuBa73JuBDwGks7ly1DtwtGr2OopL1 +56UB +-----END CERTIFICATE REQUEST----- diff --git a/dev-resources/ssl/config/cakey.pem b/dev-resources/ssl/config/cakey.pem new file mode 100644 index 0000000..e69de29 diff --git a/dev-resources/ssl/config/certdump/.gitkeep b/dev-resources/ssl/config/certdump/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dev-resources/ssl/config/client-cert.pem b/dev-resources/ssl/config/client-cert.pem new file mode 100644 index 0000000..2aa86e5 --- /dev/null +++ b/dev-resources/ssl/config/client-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDGjCCAgICAQEwDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCVVMxCzAJBgNV +BAgMAk9SMREwDwYDVQQHDAhQb3J0bGFuZDEPMA0GA1UECgwGUHVwcGV0MQswCQYD +VQQDDAJjYTAgFw0yMzA2MjAyMDQ3MDlaGA8yMTIzMDUyNzIwNDcwOVowWTELMAkG +A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0 +IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr2r+H5HCGihCfovuBuQULBvV1UMJipeVGPm7 +Lfs4B6pfxHBrNV1dejfmH8Vqs8DRTo5uHS8noodQfs/m0vBpqgKE4IPwzllE1+wY +pi7Kq2mX35PLn6aYMAPJSSnTdAaOPPss0eeVGkNFGHPI4qr4aspZC6e9QspkhKoU +ClDbLKYK9an61zbV4WeaFumdfli0uKR004lK9m9QnhLUmZ10KsY+4l9Nt3Vwflqi +h6vqjZ0Tm77wcu7768vKCv5xXid9wiBFRn0gYDm3+EnAo03VtE7pz8x754EVRIrX +hGBHxGFkGK1eRaUM0Q3FrJooITXCDcud+rfdetDvxt0ZcbabtQIDAQABMA0GCSqG +SIb3DQEBCwUAA4IBAQBn6R99/CW+XyxPKqhm/haUuzgX4FJqzrU/grju4nYj3K9l +Y094IOJNLNnxfQuRy1nAa8+cB+EDbA1Ct3wQ7p1AJgjTcdPagk5v/q3ZQ5V/hOY2 +W41yVyEiNWOm5j7aa8YDUog2SPbI7UM8+RnYK19yeqJOsPUUe1OKUfI84drcCH7l +gcQeVQYHbZiVX75MNOKOvur0oe72D1d36ZqZAA+xooM+wlrFB96ggBcqS07FMZQb +d+N7SDZbhfO4ljHPT/R5xd1yItf8UlTzhHeH7IhY/e+vFx2PsIVB2EBJyGG6w2ig +757z++jrjVtsBc+sElcIta0hIZbe95cQ6uGIJKJR +-----END CERTIFICATE----- diff --git a/dev-resources/ssl/config/client-key.pem b/dev-resources/ssl/config/client-key.pem new file mode 100644 index 0000000..d1d0ab5 --- /dev/null +++ b/dev-resources/ssl/config/client-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCvav4fkcIaKEJ+ +i+4G5BQsG9XVQwmKl5UY+bst+zgHql/EcGs1XV16N+YfxWqzwNFOjm4dLyeih1B+ +z+bS8GmqAoTgg/DOWUTX7BimLsqraZffk8ufppgwA8lJKdN0Bo48+yzR55UaQ0UY +c8jiqvhqylkLp71CymSEqhQKUNsspgr1qfrXNtXhZ5oW6Z1+WLS4pHTTiUr2b1Ce +EtSZnXQqxj7iX023dXB+WqKHq+qNnRObvvBy7vvry8oK/nFeJ33CIEVGfSBgObf4 +ScCjTdW0TunPzHvngRVEiteEYEfEYWQYrV5FpQzRDcWsmighNcINy536t9160O/G +3Rlxtpu1AgMBAAECggEAEpB8aetjUyDZHqrg6y5Gmz9r4yi30QjHQPAm+NAKJzeG +8JNkKS7jFmzliA28w96/V/S3XxPPOkJfSLhoaYEDcbhYBym3eaMVZ9OG7Uls7fSc +G894oIIBP62a5wkL5Y7PDVGYtfMwAqpFXPfd9e0ZorWc9GCRZUjll+um+MuDUodn +wOu/BD2UddIEZhPg3W8OoAx8TxSsI4qPaw/S2hUKzTn+VZ6XRd338NHtLJvcMugc +hYZX50xGD5D6Mo4OUcxaF4z4OPpKozfuOXYb/SOevcO5HTrRYsJfFfp63NQ9kEw7 +khiImvrLaclAtL7T9mHyPFg6tk53SJzyc9HupxdkUQKBgQDzHWKFj+lMcmIPYtIv +r3wdfrb32l4f1BzHUoDcF2epRnEKkj/lMvCeSycU1q2Nqkkia2+iXXPc2prnYcWD +ldNhwNOqv4OSIxLMm30rMywPt+FmIQwaHoXUeFCPovOwdY7c01Gu3gPvJLWDC31d +wzA+Y8GZhEAkztrw9c26QQoKRQKBgQC4txZvN22MjmfHi+UyPe1pDpKTCLCnx/yO +MyLM5Lo2U9+yzNObnxN3u02vpcDQHKD3mMoEAlYiIJvZxhFNFw+ZT0KznBPlYi3/ +wAnUL3hvCgC52/zKXgiqnZuN5aWHbQW/BVob65sC35kCoua/C+iu3blUYZtYexVS +DGzWtriasQKBgQCCw0FkuX0woy1fPTX0dBz7+FYNhiSuVfaMtzGcL/KPt9XBa9x2 +OSn22lFRAg8jbX4cx1CqMj3JgsNixNHp7sJdh8vRwWTRS5AnAVMX01RVt//CYPAT +dGtjVrtuJqWQOgr3d6ottjjDfikrLRjnP79JL3rISbv+kExu4qcfETCHSQKBgQCK +IN+1600Qfq08m3CZUZXnqe4R5b20uegyriqn7aMSXUY6/tB+30Y/kuFVKC43cjEs +9iSbOuQOQTRKdcMaUtRnYM4QYfa+4dxkE8dF1PnKj0BbvBYdfpQcgh+AzOori2tw +nR/1IQqZ63sQbaD/3Hfzy/p7D0KLt/8JjCEXryv9AQKBgAQrK/U5wzbPrhCEmB9d +/B5Ny3v8tbY+XyWMvG5YFotmBCF0DjRAjSb5XcgiO9vvGARyV4LXMsf6s4kbxjb1 +6q6ZF0oc3PF0YKnkXJRgDlRN90kEZc46TvuE1sD0eKzXtMGtt984iZqOjmsbUmhR +vsS3iyMbG+2XzMs/tQpAEqdc +-----END PRIVATE KEY----- diff --git a/dev-resources/ssl/config/client-req.pem b/dev-resources/ssl/config/client-req.pem new file mode 100644 index 0000000..c51c31a --- /dev/null +++ b/dev-resources/ssl/config/client-req.pem @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICnjCCAYYCAQAwWTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx +ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9j +YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr2r+H5HCGihC +fovuBuQULBvV1UMJipeVGPm7Lfs4B6pfxHBrNV1dejfmH8Vqs8DRTo5uHS8noodQ +fs/m0vBpqgKE4IPwzllE1+wYpi7Kq2mX35PLn6aYMAPJSSnTdAaOPPss0eeVGkNF +GHPI4qr4aspZC6e9QspkhKoUClDbLKYK9an61zbV4WeaFumdfli0uKR004lK9m9Q +nhLUmZ10KsY+4l9Nt3Vwflqih6vqjZ0Tm77wcu7768vKCv5xXid9wiBFRn0gYDm3 ++EnAo03VtE7pz8x754EVRIrXhGBHxGFkGK1eRaUM0Q3FrJooITXCDcud+rfdetDv +xt0ZcbabtQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAIc0eUr2YxMoPzAraIiv +FF3TEclNSTDjqZsmxOzlWP3M8LWN7AwU47pS3raeNrqL4k38pxhWqcqNg4DCi7t4 +TEHvon+WZhcmfMf/C8OYD6xcoVLkFd7Nf4Vw7pacOVHMIzAXvtdShvvSjfXsU5Rf +HbWdckcGIODkhkW9rAp6PdELeQlCWOsCsy6ej2osEo1f7UUI3oMLdPPkP3rPX+zo +fE71qQaSw4Ib9vILhCrVguy65TtM0w7XIoyYKT31XZWPUi6BX1j/BVXP3Dyo8i3T +rvCY5aD+gcL8063T0K6opezS55eAUxC6KaWr5B30yNIt9NfH3Z7T/VGWRP28yJvz +nVI= +-----END CERTIFICATE REQUEST----- diff --git a/dev-resources/ssl/config/index.txt b/dev-resources/ssl/config/index.txt new file mode 100644 index 0000000..dbbe4eb --- /dev/null +++ b/dev-resources/ssl/config/index.txt @@ -0,0 +1 @@ +V 270619204433Z 0C9614CA9D1E7E63CBB7E0E5886A17538EE393C0 unknown /C=US/ST=OR/L=Portland/O=Puppet/CN=ca diff --git a/dev-resources/ssl/config/index.txt.attr b/dev-resources/ssl/config/index.txt.attr new file mode 100644 index 0000000..8f7e63a --- /dev/null +++ b/dev-resources/ssl/config/index.txt.attr @@ -0,0 +1 @@ +unique_subject = yes diff --git a/dev-resources/ssl/config/move_files.sh b/dev-resources/ssl/config/move_files.sh new file mode 100755 index 0000000..36daf3a --- /dev/null +++ b/dev-resources/ssl/config/move_files.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh + +cp ca.pem ../ +cp client-key.pem ../key.pem +cp client-cert.pem ../cert.pem diff --git a/dev-resources/ssl/config/openssl.cnf b/dev-resources/ssl/config/openssl.cnf new file mode 100644 index 0000000..1d3ad3c --- /dev/null +++ b/dev-resources/ssl/config/openssl.cnf @@ -0,0 +1,53 @@ +[ ca ] +default_ca = CA_default # The default ca section + +[ CA_default ] +dir = . # Where everything is kept +database = $dir/index.txt # database index file. +new_certs_dir = $dir/certdump # certs sent to this location have garbage names +certificate = $dir/ca.pem # The CA certificate +private_key = $dir/private_keys/cakey.pem # The CA private key +default_md = default # use public key default MD +policy = policy_anything +serial = $dir/serial # The current serial number +default_days = 3650 # how long to certify for + +# For the CA policy +[ policy_anything ] +countryName = optional +stateOrProvinceName = optional +localityName = optional +organizationName = optional +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +#################################################################### +[ req ] +distinguished_name = req_distinguished_name +req_extensions = v3_req +prompt = no + +[ req_distinguished_name ] +C = US +ST = OR +L = Portland +O = Puppet +CN = ca + +[ v3_ca ] + +# Extensions for a typical CA + +# PKIX recommendation. +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid:always,issuer +basicConstraints = critical,CA:true + +[ v3_req ] + +# Extensions to add to a certificate request + +basicConstraints = CA:FALSE +keyUsage = nonRepudiation, digitalSignature, keyEncipherment +subjectAltName = DNS:localhost \ No newline at end of file diff --git a/dev-resources/ssl/config/private_keys/cakey.pem b/dev-resources/ssl/config/private_keys/cakey.pem new file mode 100644 index 0000000..a13503f --- /dev/null +++ b/dev-resources/ssl/config/private_keys/cakey.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCpUdNnM0gmlgp8 +Ndf0DxuPpo4EATIgTTvZYFfuGvImFyb81BA1/d6Dz94rHCF1pX32yn852At8UTqL +RuB1el85iZ+qSLTh+Af4o0P641U//crbsV3Yp98Y0Lz+jJGItyzRkVoKq7qQMCpz +SywSdEKSlqwzSGxJLY7w5+qfo/kXskI54nkGRuPlq1t0TYS33VQ7+eJRsR97yMo3 +kiX6gyBjnKhEnEGkliyms1I5q53f7mYVUjaCUyzxno3RcD3ARZ3/ZtM7zpmtvrSp +18ei9jdlrW9yUcSqAHKEq0KTu72tbEGy/skcQMluEEWs4A/zMIIUnSQXjLZ5hvoY +ZDGLAapNAgMBAAECggEAI//fwLtohbu08v/HsH5dz8cLvtI6RB/nr6oKR/e2sF6P +zYWRBMm7O69Af0311zuecpBPSI8ksgPbPK2PH6sq/+LA7cWTn8/KchTUaU1YXMir +DtbBK0VV68LFzCE6+CRqBQywZkBo5Cs5e1XqQuoxFVWvux+U1mI3WAUXH2YPmffV +vk2Nmd7aH5ZIN821YIsH8MF3iO0YAEwU8AIneD9yhh0TSu2BVvRbfg6Fb8bCyEqX +/5nNFaVGzc+/tyIT0qBYTymfHNcpJ8o/1mb8YS3G/6mY6NhlPhcFSqwz+k6KKJjP +Bg+h3RL/+yUNsZeMMOdIcW86jNVl5AEnV8NA3NkJCQKBgQDiuGm1udcdbuseMQla +1zYHmChUTu4uAacWQlTWJtZyBmDoe9EJi0b7rRF3zHbPTg4an5/X94SLARvKjmvT +r7oLI7MBpZAlLDvBBwCwO2oA618gMr+9dk4Bkzq7Om9FpDKzWx+HzlfWPOG2wuvH +5cK3AFZiKbGk9gdhE1ixV5/JvwKBgQC/L7DpFSoSHPCGfkePJCVchHx8SuqcRwSw +UY8KoRjX22KZYtl4nTEEB1/ef/FCjal3ZxzhJJOvlqjy+hU5zlQJCb6nP6G9Pitl +YrSltqfzpkc+fBCcoi7xhK9G0Ns2nBNP0xoC3Lh24d4uqvN6IIu3JoH9fbZGEcqR +ngCArTFW8wKBgDt0JLR1EYY0ag+2yD88JH0FV74UHL2PzWM27cxizuWD6rHMllqs +XWbuUaBay+U9ENHGfkJCNE3HcqRBiOEwOddl+zE5W32EBf9ueK2+RuQK1R06cbGb +boVXOJWUk01t66XBBZm1cK9Ls90bbH01MUSQIBcJ2/3oTrMUQbPvyIU9AoGAC6JH +TaewC7IfINAGYrt8WojlWlrks+XObzxHTApJjLkY4uSU/zXxiaE5QDzg3X/pVA6+ +PyUOp5yvYzm8mOvpSTOCmoLQwMdLtLuw6nSW+8iehTrfd+iWmrPMRq7m6AfPVQgv +iQUNZI6SCpz0e/YHCnoZZueDc/gZL4tB1JK1cekCgYEA4oFvukGMuCcAjlN8djAZ +matvyeIJ29VC2x55rr/zVAFn/DS5vOlJ4fxoIjG525BlyqTvV+BOwvCRftXnzWLC +3yC61FRyDOrTu9YS9O9aAjxflwWACYqQMdawG4k2hscMu1LrECK4e5OH8XYWjPpY +ZK6PcybqLpVJ3MWEsideH0w= +-----END PRIVATE KEY----- diff --git a/dev-resources/ssl/config/regenerate_ca.sh b/dev-resources/ssl/config/regenerate_ca.sh new file mode 100755 index 0000000..0352733 --- /dev/null +++ b/dev-resources/ssl/config/regenerate_ca.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh + +#create a new CA cert and private key +openssl req -new -newkey rsa:2048 -keyout private_keys/cakey.pem -extensions v3_ca -nodes -config ./openssl.cnf -out ca_req.pem +openssl ca -batch -create_serial -days 1460 -keyfile private_keys/cakey.pem -selfsign -out ./ca.pem -notext -config ./openssl.cnf -extensions v3_ca -infiles ca_req.pem diff --git a/dev-resources/ssl/config/serial b/dev-resources/ssl/config/serial new file mode 100644 index 0000000..f41d032 --- /dev/null +++ b/dev-resources/ssl/config/serial @@ -0,0 +1 @@ +0C9614CA9D1E7E63CBB7E0E5886A17538EE393C1 diff --git a/dev-resources/ssl/key.pem b/dev-resources/ssl/key.pem index 2dfd3b5..d1d0ab5 100644 --- a/dev-resources/ssl/key.pem +++ b/dev-resources/ssl/key.pem @@ -1,51 +1,28 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCvav4fkcIaKEJ+ +i+4G5BQsG9XVQwmKl5UY+bst+zgHql/EcGs1XV16N+YfxWqzwNFOjm4dLyeih1B+ +z+bS8GmqAoTgg/DOWUTX7BimLsqraZffk8ufppgwA8lJKdN0Bo48+yzR55UaQ0UY +c8jiqvhqylkLp71CymSEqhQKUNsspgr1qfrXNtXhZ5oW6Z1+WLS4pHTTiUr2b1Ce +EtSZnXQqxj7iX023dXB+WqKHq+qNnRObvvBy7vvry8oK/nFeJ33CIEVGfSBgObf4 +ScCjTdW0TunPzHvngRVEiteEYEfEYWQYrV5FpQzRDcWsmighNcINy536t9160O/G +3Rlxtpu1AgMBAAECggEAEpB8aetjUyDZHqrg6y5Gmz9r4yi30QjHQPAm+NAKJzeG +8JNkKS7jFmzliA28w96/V/S3XxPPOkJfSLhoaYEDcbhYBym3eaMVZ9OG7Uls7fSc +G894oIIBP62a5wkL5Y7PDVGYtfMwAqpFXPfd9e0ZorWc9GCRZUjll+um+MuDUodn +wOu/BD2UddIEZhPg3W8OoAx8TxSsI4qPaw/S2hUKzTn+VZ6XRd338NHtLJvcMugc +hYZX50xGD5D6Mo4OUcxaF4z4OPpKozfuOXYb/SOevcO5HTrRYsJfFfp63NQ9kEw7 +khiImvrLaclAtL7T9mHyPFg6tk53SJzyc9HupxdkUQKBgQDzHWKFj+lMcmIPYtIv +r3wdfrb32l4f1BzHUoDcF2epRnEKkj/lMvCeSycU1q2Nqkkia2+iXXPc2prnYcWD +ldNhwNOqv4OSIxLMm30rMywPt+FmIQwaHoXUeFCPovOwdY7c01Gu3gPvJLWDC31d +wzA+Y8GZhEAkztrw9c26QQoKRQKBgQC4txZvN22MjmfHi+UyPe1pDpKTCLCnx/yO +MyLM5Lo2U9+yzNObnxN3u02vpcDQHKD3mMoEAlYiIJvZxhFNFw+ZT0KznBPlYi3/ +wAnUL3hvCgC52/zKXgiqnZuN5aWHbQW/BVob65sC35kCoua/C+iu3blUYZtYexVS +DGzWtriasQKBgQCCw0FkuX0woy1fPTX0dBz7+FYNhiSuVfaMtzGcL/KPt9XBa9x2 +OSn22lFRAg8jbX4cx1CqMj3JgsNixNHp7sJdh8vRwWTRS5AnAVMX01RVt//CYPAT +dGtjVrtuJqWQOgr3d6ottjjDfikrLRjnP79JL3rISbv+kExu4qcfETCHSQKBgQCK +IN+1600Qfq08m3CZUZXnqe4R5b20uegyriqn7aMSXUY6/tB+30Y/kuFVKC43cjEs +9iSbOuQOQTRKdcMaUtRnYM4QYfa+4dxkE8dF1PnKj0BbvBYdfpQcgh+AzOori2tw +nR/1IQqZ63sQbaD/3Hfzy/p7D0KLt/8JjCEXryv9AQKBgAQrK/U5wzbPrhCEmB9d +/B5Ny3v8tbY+XyWMvG5YFotmBCF0DjRAjSb5XcgiO9vvGARyV4LXMsf6s4kbxjb1 +6q6ZF0oc3PF0YKnkXJRgDlRN90kEZc46TvuE1sD0eKzXtMGtt984iZqOjmsbUmhR +vsS3iyMbG+2XzMs/tQpAEqdc +-----END PRIVATE KEY----- diff --git a/project.clj b/project.clj index c549ece..7bf0388 100644 --- a/project.clj +++ b/project.clj @@ -58,7 +58,7 @@ [org.bouncycastle/bctls-fips]] :jvm-opts ~(let [version (System/getProperty "java.specification.version") [major minor _] (clojure.string/split version #"\.") - unsupported-ex (ex-info "Unsupported major Java version. Expects 8 or 11." + unsupported-ex (ex-info "Unsupported major Java version. Expects 8, 11 or 17." {:major major :minor minor})] (condp = (java.lang.Integer/parseInt major) @@ -66,6 +66,7 @@ ["-Djava.security.properties==./dev-resources/java.security.jdk8-fips"] (throw unsupported-ex)) 11 ["-Djava.security.properties==./dev-resources/java.security.jdk11-fips"] + 17 ["-Djava.security.properties==./dev-resources/java.security.jdk17-fips"] (throw unsupported-ex)))}] ;; per https://github.com/technomancy/leiningen/issues/1907