Commit Graph
67 Commits
Author SHA1 Message Date
James Munnelly 0fcc0c666c Update copyright header year
Signed-off-by: James Munnelly <james@munnelly.eu>
2019-01-07 15:07:55 +00:00
James Munnelly 08882e5fc2 Wrap missing secret data errors with Invalid
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-11-29 01:18:43 +00:00
James Munnelly f358d987ea Retrieve private key before certificate in kube TLS function
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-11-28 19:18:30 +00:00
James Munnelly dc97dde2ef Make Certificate Ready condition behaviour consistent between all issuer types
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-11-28 17:00:51 +00:00
Max Ehrlichandjetstack-bot bbd9249198 Configurable issuer duration and renewBefore Take 2 (#893)
* Configurable issuer duration and renewBefore [1/3]

This is part one of (probably) three parts manually moving the changes from commit 723015174a167d746323f506ab3575cfb243d8bd to the new master. This commit moves the basic functionality of configurable duration while skipping e2e tests and docs. It does not include new work.

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Configurable issuer duration and renewBefore [2/3]

This commit moves over most of the e2e testing updates, some things are intentionally left out as they may be obsolete

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Configurable issuer duration and renewBefore [3/3]

This commit moves the documentation changes, completely the migration of the original code to the latest master

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Rerunning all hack scripts with since the massive bazel update

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Add missing boilerplate headers

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Rerun codegen hack

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Rerunning update-docs hack

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fix failing unit tests

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fix build errors in e2e tests

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Rerun update-deps

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Don't recreate the CA issuer, it already exists

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Need to create new issuers for the duration and renew time tests because those fields are set in the issuer, so make sure they are named uniquely

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Add duration e2e tests for self-signed issuer

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Add duration e2e tests for vault w/ custom mount path

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Add validation to disallow acme certificates with duration and renewBefore set and update unit tests to verify

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Update docs to mention duration/renew for self-signed issuer and fix potential parsing errors with rst formatting

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Self-signed issuer was missing duration validation

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fix a bug causing certificates with a short enough renew-before w.r.t their duration to be renewed instantly and forever

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Print the exact time until renewal

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Move duration and renwal validation to the issuer validation

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Update e2e tests to work with new validation

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Add e2e test for the self-signed issuer

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Redo cert duration and renew before to appear as part of the CSR and not the issuer

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Updating tests to match new duration/renewbefore format

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Update e2e tests to match new format

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Update docs to reflect changing the field from issuers to certificates

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Remove event firing and replace with a TODO as of discussion on PR

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Run hack scripts

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Remove the sync unit test since without events there is no way to catch the warnings that it was testing

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Use IssuerOptions RenewBeforeExpiryDuration if certificates dont set a renewBefore value for immediate renewal checks

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Delete check on certificate data length in e2e test for certificate duration as there is no reason it should be there

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Update e2e tests since certificate creation will never generate an event

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Rerunning hack scripts after big rebase

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fix a few problems that slipped through during the rebase

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fix an e2e error that resulted from the rebase

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Add unit test for the calculateTimeBeforeExpiry function

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Adding back in a bunch of missing error checks

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Remove unused function

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Add missing boilerplate

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Remove unused constant

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Move log constants to function body

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Rerun hack scripts

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Remove mistakenly commited file

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Remove double-import of util package

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fix bad function call in e2e vault issuer

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Change duration and renewBefore to be pointer fields as they are optional

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Remove wrong vault issuer test that got passed the rebase somehow

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Change e2e to use pointer format

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Move e2e cert tests out of issuer test file

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Move e2e self-signed issuer test to new location

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Make sure to check for nil in GenerateTemplate

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Add more empty checks to be safe

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Rerunning hacks after rebase

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fix bad function call in new e2e test

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Try not setting duration and renewbefore on acme e2e tests

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Zero checks should really just be replaced by nil tests, zero should be caught as any other too-small value

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fixed a missing nil check that got away

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Change e2e duration test format to use pointer times to better simulate API calls

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fix sync unit test to match e2e test format

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Fix vault e2e test

Signed-off-by: Max Ehrlich <max.ehr@gmail.com>

* Revert changes to Certificate sync function

Signed-off-by: James Munnelly <james@munnelly.eu>

* Remove selfsigned e2e issuer.go

Signed-off-by: James Munnelly <james@munnelly.eu>

* Don't use ACME issuer in duration example and tidy up line endings

Signed-off-by: James Munnelly <james@munnelly.eu>

* Allow renewBefore to be set on ACME certificates

Signed-off-by: James Munnelly <james@munnelly.eu>

* Update renewBefore ACME docs. Remove unused fields.

Signed-off-by: James Munnelly <james@munnelly.eu>

* Rename calculateTimeBeforeExpiry to calculateDurationUntilRenew

Signed-off-by: James Munnelly <james@munnelly.eu>
2018-11-14 22:30:00 +00:00
James Munnelly fdfc7f2f77 Don't explicitly set SignatureAlgorithm on signed Certificate
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-11-07 11:14:54 +00:00
James Munnelly ad0971288e Run update-gofmt
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-11-06 11:10:21 +00:00
Luke Mallon (Nalum) e2e1077cc8 Update bazel build files
Signed-off-by: Luke Mallon (Nalum) <luke@mallon.io>
2018-10-29 15:59:54 +00:00
Luke Mallon (Nalum) 35f2d16ec8 Add tests to cover the version function
Signed-off-by: Luke Mallon (Nalum) <luke@mallon.io>
2018-10-27 18:32:07 +01:00
Luke Mallon (Nalum) c4fc6d7373 Update version string
Only add the commit hash to the version string if the AppVersion is set
to canary. See #997

Signed-off-by: Luke Mallon (Nalum) <luke@mallon.io>
2018-10-27 17:33:45 +01:00
jetstack-botandGitHub 500957f37e Merge pull request #968 from munnerz/sig-algo
Update SignatureAlgorithm function to also return PublicKey type
2018-10-16 15:03:37 +01:00
jetstack-botandGitHub 9eab875005 Merge pull request #967 from munnerz/unused-args
Remove unused arg from GenerateTemplate
2018-10-16 14:36:36 +01:00
James Munnelly 3b81bb594d Update unit tests
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-10-16 12:41:29 +01:00
James Munnelly 293bfd412f Update SignatureAlgorithm function to also return PublicKey type
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-10-16 12:31:24 +01:00
James Munnelly 03c6f1229f Remove unused arg from GenerateTemplate
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-10-16 12:29:38 +01:00
James Munnelly 09e0f1f188 Run //hack:update-bazel
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-10-16 10:27:04 +01:00
James Munnelly f33561741f Remove unused/dead code
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-10-16 10:23:47 +01:00
James Munnelly 420683609b Add comments to pkg/util functions
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-10-16 10:16:34 +01:00
James Munnelly 84978d88d8 Add extra comments to acme and pki package
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-10-13 21:05:18 +01:00
James MunnellyandJames Munnelly 847d0c6152 Refactor controllers to return Response structures
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-10-12 12:40:38 +01:00
Max Ehrlich 41c7def791 Helper function to get PEM encoded bytes of x509 certs
Signed-off-by: Max Ehrlich <max.ehr@gmail.com>
2018-09-13 17:07:14 -04:00
James Munnelly b1f145625e Set up Bazel workspace with git status and pass ldflags
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-09-13 11:24:52 +01:00
James Munnelly db65d6a170 run //hack:update-bazel
Signed-off-by: James Munnelly <james@munnelly.eu>
2018-09-13 11:24:48 +01:00
Max Ehrlich 6a9f1d2348 Update code to allow setting multiple organizations
Signed-off-by: Max Ehrlich <max.ehr@gmail.com>
2018-09-08 16:21:13 -04:00
Max Ehrlich 340d2725e7 Generate certificates with the new organization field
Signed-off-by: Max Ehrlich <max.ehr@gmail.com>
2018-09-08 16:21:12 -04:00
James Munnelly 8d3d095a29 Add 'isCA' field to Certificate spec
Signed-off-by: James Munnelly <james.munnelly@jetstack.io>
2018-08-14 10:32:48 +01:00
James Munnelly 51195e4c5f Update license header and add header to every file
Signed-off-by: James Munnelly <james.munnelly@jetstack.io>
2018-08-13 15:53:37 +01:00
James MunnellyandGitHub 2110aacc3b Don't bundle the CA certificate when selfsigned 2018-08-09 16:32:10 +01:00
James Munnelly 503186c2d2 Add unit test for PublicKeyMatchesCertificate 2018-08-08 13:39:34 +01:00
James Munnelly 0dd3155fb2 Add logic to handle ready vs valid ACME orders 2018-08-08 13:39:34 +01:00
jetstack-botandGitHub 6348c6ffca Merge pull request #722 from autonomic-ai/support-ec-keys
Add keyAlgorithm and keySize fields to Certificates, and support ECDSA keys
2018-07-18 10:00:36 +01:00
Afolabi Badmos 445e522432 Add support for EC keys
- This PR adds two fields to CertificateSpec:
  - `keyAlgorithm`, denotes which algorithm to use when generating
    a private key. Can be either `rsa` or `ecdsa`. When not set, the
    default algorithm used `rsa`.
  - `keySize`, denotes the key size of the private key being generated.
    For `rsa`, minimum key size is 2048 and maximum is 8192.
    For `ecdsa`, sizes 224, 256, 384 & 521 are supported.
    See https://golang.org/pkg/crypto/elliptic

- `keySize` can be set without being explicit about `keyAlgorithm`.
  - If `keySize` is specified and `keyAlgorithm` is not provided, `rsa` will
    be used as the key algorithm.

- `keyAlgorithm` can be set without being explicit about `keySize`.
  - If `keyAlgorithm` is specified and `keySize` is not provided, key size
    key size of `256` will be used for `ecdsa` key algorithm and
    key size of `2048` will be used for `rsa` key algorithm.

- helper functions in `pki` package now return crypto.PrivateKey
2018-07-17 12:42:07 -04:00
Louis Taylor 969c4530a0 Add Contains util function 2018-07-12 10:27:05 +01:00
James Munnelly 1fd8cdf13e Create common GenerateCSR and GenerateTemplate methods for creating Certificate/CertificateRequest 2018-06-08 15:15:27 +01:00
James Munnelly b934852775 Merge branch 'master' into acmev2 2018-04-09 16:52:34 +01:00
Euan Kemp 6b4e33a483 util/useragent: use more verbose version 2018-04-06 18:09:52 -07:00
Euan Kemp 9c3b4e83b4 pkg/util/kube: set user-agent
This should make it slightly easier to filter api-server logs for
cert-manager activity
2018-04-06 18:09:17 -07:00
Euan Kemp 7f12fb346c issuer/acme: move 'user-agent' logic to util
This logic should be shared by things like the aws client as well.
2018-04-06 18:09:11 -07:00
James Munnelly b866b8cdf4 Fix bug in EqualUnsorted when comparing lists of the same length 2018-04-04 23:40:08 +01:00
James Munnelly f2ddd1d111 Change DNSNames/CommonNameForCertificate function to not return an error 2018-04-04 23:37:37 +01:00
James Munnelly c3be0f204e Add ingress-shim controller to create Certificates based on annotations on ingress resources 2017-11-30 22:53:54 +00:00
jetstack-botandGitHub e32147b695 Merge pull request #183 from munnerz/fix-issue-loop
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Improve validation of certificates. Fix bug in checking certificate validity

**What this PR does / why we need it**:

Improves the validation of dnsNames and commonNames on certificate resources.
Fixes a bug in checking certificate validity.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

Fixes #176, fixes #175

**Release note**:
```release-note
Fix a bug in checking certificate validity and improve validation of dnsNames and commonName
```
2017-11-04 01:00:30 +00:00
James Munnelly ffbfe2da3d Use ordered RemoveDuplicates. Add additional test cases. 2017-11-04 00:44:08 +00:00
James Munnelly 74d711ceef Add unit tests for cert->dnsName and cert->CN functions 2017-11-04 00:10:42 +00:00
James Munnelly f3db0df7b6 Add RemoveDuplicates unit test 2017-11-03 23:58:25 +00:00
James Munnelly 6ac437699d Improve validation of certificates. Fix bug in checking certificate validity 2017-11-03 23:48:18 +00:00
James Munnelly 422f8fc4be Add basic validation to ACME issuer 2017-11-03 23:35:58 +00:00
James Munnelly fa7e052ac1 Move to github.com/jetstack/cert-manager repo 2017-11-03 16:41:39 +00:00
James Munnelly eb4be6859e Update controllers and issuers for new SharedInformerFactory 2017-11-03 15:26:19 +00:00
James Munnelly 9d933d9e11 Only update certificate status in the controller package to stop conflicts 2017-10-13 20:15:29 +01:00