@pulumi/tls 5.3.0 → 5.3.1-alpha.1774890786
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/certRequest.d.ts +9 -0
- package/certRequest.js +9 -0
- package/certRequest.js.map +1 -1
- package/getCertificate.d.ts +88 -0
- package/getCertificate.js +88 -0
- package/getCertificate.js.map +1 -1
- package/locallySignedCert.d.ts +58 -0
- package/locallySignedCert.js +49 -0
- package/locallySignedCert.js.map +1 -1
- package/package.json +2 -2
- package/privateKey.d.ts +46 -0
- package/privateKey.js +46 -0
- package/privateKey.js.map +1 -1
- package/selfSignedCert.d.ts +58 -0
- package/selfSignedCert.js +49 -0
- package/selfSignedCert.js.map +1 -1
package/certRequest.d.ts
CHANGED
|
@@ -2,6 +2,15 @@ import * as pulumi from "@pulumi/pulumi";
|
|
|
2
2
|
import * as inputs from "./types/input";
|
|
3
3
|
import * as outputs from "./types/output";
|
|
4
4
|
/**
|
|
5
|
+
* Creates a Certificate Signing Request (CSR) in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) format.
|
|
6
|
+
*
|
|
7
|
+
* PEM is the typical format used to request a certificate from a Certificate Authority (CA).
|
|
8
|
+
*
|
|
9
|
+
* This resource is intended to be used in conjunction with a Terraform provider for a particular certificate authority in order to provision a new certificate.
|
|
10
|
+
*
|
|
11
|
+
* This is a *logical resource*, so it contributes only to the current Terraform
|
|
12
|
+
* state and does not create any external managed resources.
|
|
13
|
+
*
|
|
5
14
|
* ## Example Usage
|
|
6
15
|
*
|
|
7
16
|
* ```typescript
|
package/certRequest.js
CHANGED
|
@@ -6,6 +6,15 @@ exports.CertRequest = void 0;
|
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
8
|
/**
|
|
9
|
+
* Creates a Certificate Signing Request (CSR) in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) format.
|
|
10
|
+
*
|
|
11
|
+
* PEM is the typical format used to request a certificate from a Certificate Authority (CA).
|
|
12
|
+
*
|
|
13
|
+
* This resource is intended to be used in conjunction with a Terraform provider for a particular certificate authority in order to provision a new certificate.
|
|
14
|
+
*
|
|
15
|
+
* This is a *logical resource*, so it contributes only to the current Terraform
|
|
16
|
+
* state and does not create any external managed resources.
|
|
17
|
+
*
|
|
9
18
|
* ## Example Usage
|
|
10
19
|
*
|
|
11
20
|
* ```typescript
|
package/certRequest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certRequest.js","sourceRoot":"","sources":["../certRequest.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC
|
|
1
|
+
{"version":3,"file":"certRequest.js","sourceRoot":"","sources":["../certRequest.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAa,WAAY,SAAQ,MAAM,CAAC,cAAc;IAClD;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAwB,EAAE,IAAmC;QACtH,OAAO,IAAI,WAAW,CAAC,IAAI,EAAO,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,WAAW,CAAC,YAAY,CAAC;IAC5D,CAAC;IAuCD,YAAY,IAAY,EAAE,WAAgD,EAAE,IAAmC;QAC3G,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAA2C,CAAC;YAC1D,cAAc,CAAC,gBAAgB,CAAC,GAAG,KAAK,EAAE,cAAc,CAAC;YACzD,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC;YAC7C,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC;YACnD,cAAc,CAAC,cAAc,CAAC,GAAG,KAAK,EAAE,YAAY,CAAC;YACrD,cAAc,CAAC,eAAe,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC;YACvD,cAAc,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC;YAC3C,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC;SACxC;aAAM;YACH,MAAM,IAAI,GAAG,WAA0C,CAAC;YACxD,IAAI,IAAI,EAAE,aAAa,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAChD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAChE;YACD,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC;YAC5C,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC;YAClD,cAAc,CAAC,eAAe,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtG,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC;YAC1C,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;YACpC,cAAc,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YACrD,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;SACtD;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,EAAE,uBAAuB,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;QAClE,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC7C,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;;AA9FL,kCA+FC;AAjFG,gBAAgB;AACO,wBAAY,GAAG,mCAAmC,CAAC"}
|
package/getCertificate.d.ts
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
2
|
import * as outputs from "./types/output";
|
|
3
|
+
/**
|
|
4
|
+
* Get information about the TLS certificates securing a host.
|
|
5
|
+
*
|
|
6
|
+
* Use this data source to get information, such as SHA1 fingerprint or serial number, about the TLS certificates that protects a URL.
|
|
7
|
+
*
|
|
8
|
+
* ## Example Usage
|
|
9
|
+
*
|
|
10
|
+
* ### URL Usage
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
13
|
+
* import * as aws from "@pulumi/aws";
|
|
14
|
+
* import * as tls from "@pulumi/tls";
|
|
15
|
+
*
|
|
16
|
+
* const exampleEksCluster = new aws.index.EksCluster("example", {name: "example"});
|
|
17
|
+
* const example = tls.getCertificate({
|
|
18
|
+
* url: exampleEksCluster.identity[0].oidc[0].issuer,
|
|
19
|
+
* });
|
|
20
|
+
* const exampleIamOpenidConnectProvider = new aws.index.IamOpenidConnectProvider("example", {
|
|
21
|
+
* clientIdList: ["sts.amazonaws.com"],
|
|
22
|
+
* thumbprintList: [example.certificates?.[0]?.sha1Fingerprint],
|
|
23
|
+
* url: exampleEksCluster.identity[0].oidc[0].issuer,
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* ### Content Usage
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
30
|
+
* import * as std from "@pulumi/std";
|
|
31
|
+
* import * as tls from "@pulumi/tls";
|
|
32
|
+
*
|
|
33
|
+
* const exampleContent = std.file({
|
|
34
|
+
* input: "example.pem",
|
|
35
|
+
* }).then(invoke => tls.getCertificate({
|
|
36
|
+
* content: invoke.result,
|
|
37
|
+
* }));
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* <!--
|
|
41
|
+
* Schema ORIGINALLY generated by tfplugindocs,
|
|
42
|
+
* then manually tweaked to circumvent current limitations.
|
|
43
|
+
*
|
|
44
|
+
* This should be revisited, once https://github.com/hashicorp/terraform-plugin-docs/issues/66 is resolved.
|
|
45
|
+
* -->
|
|
46
|
+
*/
|
|
3
47
|
export declare function getCertificate(args?: GetCertificateArgs, opts?: pulumi.InvokeOptions): Promise<GetCertificateResult>;
|
|
4
48
|
/**
|
|
5
49
|
* A collection of arguments for invoking getCertificate.
|
|
@@ -43,6 +87,50 @@ export interface GetCertificateResult {
|
|
|
43
87
|
*/
|
|
44
88
|
readonly verifyChain?: boolean;
|
|
45
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Get information about the TLS certificates securing a host.
|
|
92
|
+
*
|
|
93
|
+
* Use this data source to get information, such as SHA1 fingerprint or serial number, about the TLS certificates that protects a URL.
|
|
94
|
+
*
|
|
95
|
+
* ## Example Usage
|
|
96
|
+
*
|
|
97
|
+
* ### URL Usage
|
|
98
|
+
* ```typescript
|
|
99
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
100
|
+
* import * as aws from "@pulumi/aws";
|
|
101
|
+
* import * as tls from "@pulumi/tls";
|
|
102
|
+
*
|
|
103
|
+
* const exampleEksCluster = new aws.index.EksCluster("example", {name: "example"});
|
|
104
|
+
* const example = tls.getCertificate({
|
|
105
|
+
* url: exampleEksCluster.identity[0].oidc[0].issuer,
|
|
106
|
+
* });
|
|
107
|
+
* const exampleIamOpenidConnectProvider = new aws.index.IamOpenidConnectProvider("example", {
|
|
108
|
+
* clientIdList: ["sts.amazonaws.com"],
|
|
109
|
+
* thumbprintList: [example.certificates?.[0]?.sha1Fingerprint],
|
|
110
|
+
* url: exampleEksCluster.identity[0].oidc[0].issuer,
|
|
111
|
+
* });
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* ### Content Usage
|
|
115
|
+
* ```typescript
|
|
116
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
117
|
+
* import * as std from "@pulumi/std";
|
|
118
|
+
* import * as tls from "@pulumi/tls";
|
|
119
|
+
*
|
|
120
|
+
* const exampleContent = std.file({
|
|
121
|
+
* input: "example.pem",
|
|
122
|
+
* }).then(invoke => tls.getCertificate({
|
|
123
|
+
* content: invoke.result,
|
|
124
|
+
* }));
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* <!--
|
|
128
|
+
* Schema ORIGINALLY generated by tfplugindocs,
|
|
129
|
+
* then manually tweaked to circumvent current limitations.
|
|
130
|
+
*
|
|
131
|
+
* This should be revisited, once https://github.com/hashicorp/terraform-plugin-docs/issues/66 is resolved.
|
|
132
|
+
* -->
|
|
133
|
+
*/
|
|
46
134
|
export declare function getCertificateOutput(args?: GetCertificateOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetCertificateResult>;
|
|
47
135
|
/**
|
|
48
136
|
* A collection of arguments for invoking getCertificate.
|
package/getCertificate.js
CHANGED
|
@@ -5,6 +5,50 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.getCertificateOutput = exports.getCertificate = void 0;
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
|
+
/**
|
|
9
|
+
* Get information about the TLS certificates securing a host.
|
|
10
|
+
*
|
|
11
|
+
* Use this data source to get information, such as SHA1 fingerprint or serial number, about the TLS certificates that protects a URL.
|
|
12
|
+
*
|
|
13
|
+
* ## Example Usage
|
|
14
|
+
*
|
|
15
|
+
* ### URL Usage
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
18
|
+
* import * as aws from "@pulumi/aws";
|
|
19
|
+
* import * as tls from "@pulumi/tls";
|
|
20
|
+
*
|
|
21
|
+
* const exampleEksCluster = new aws.index.EksCluster("example", {name: "example"});
|
|
22
|
+
* const example = tls.getCertificate({
|
|
23
|
+
* url: exampleEksCluster.identity[0].oidc[0].issuer,
|
|
24
|
+
* });
|
|
25
|
+
* const exampleIamOpenidConnectProvider = new aws.index.IamOpenidConnectProvider("example", {
|
|
26
|
+
* clientIdList: ["sts.amazonaws.com"],
|
|
27
|
+
* thumbprintList: [example.certificates?.[0]?.sha1Fingerprint],
|
|
28
|
+
* url: exampleEksCluster.identity[0].oidc[0].issuer,
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* ### Content Usage
|
|
33
|
+
* ```typescript
|
|
34
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
35
|
+
* import * as std from "@pulumi/std";
|
|
36
|
+
* import * as tls from "@pulumi/tls";
|
|
37
|
+
*
|
|
38
|
+
* const exampleContent = std.file({
|
|
39
|
+
* input: "example.pem",
|
|
40
|
+
* }).then(invoke => tls.getCertificate({
|
|
41
|
+
* content: invoke.result,
|
|
42
|
+
* }));
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* <!--
|
|
46
|
+
* Schema ORIGINALLY generated by tfplugindocs,
|
|
47
|
+
* then manually tweaked to circumvent current limitations.
|
|
48
|
+
*
|
|
49
|
+
* This should be revisited, once https://github.com/hashicorp/terraform-plugin-docs/issues/66 is resolved.
|
|
50
|
+
* -->
|
|
51
|
+
*/
|
|
8
52
|
function getCertificate(args, opts) {
|
|
9
53
|
args = args || {};
|
|
10
54
|
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
|
|
@@ -15,6 +59,50 @@ function getCertificate(args, opts) {
|
|
|
15
59
|
}, opts);
|
|
16
60
|
}
|
|
17
61
|
exports.getCertificate = getCertificate;
|
|
62
|
+
/**
|
|
63
|
+
* Get information about the TLS certificates securing a host.
|
|
64
|
+
*
|
|
65
|
+
* Use this data source to get information, such as SHA1 fingerprint or serial number, about the TLS certificates that protects a URL.
|
|
66
|
+
*
|
|
67
|
+
* ## Example Usage
|
|
68
|
+
*
|
|
69
|
+
* ### URL Usage
|
|
70
|
+
* ```typescript
|
|
71
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
72
|
+
* import * as aws from "@pulumi/aws";
|
|
73
|
+
* import * as tls from "@pulumi/tls";
|
|
74
|
+
*
|
|
75
|
+
* const exampleEksCluster = new aws.index.EksCluster("example", {name: "example"});
|
|
76
|
+
* const example = tls.getCertificate({
|
|
77
|
+
* url: exampleEksCluster.identity[0].oidc[0].issuer,
|
|
78
|
+
* });
|
|
79
|
+
* const exampleIamOpenidConnectProvider = new aws.index.IamOpenidConnectProvider("example", {
|
|
80
|
+
* clientIdList: ["sts.amazonaws.com"],
|
|
81
|
+
* thumbprintList: [example.certificates?.[0]?.sha1Fingerprint],
|
|
82
|
+
* url: exampleEksCluster.identity[0].oidc[0].issuer,
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* ### Content Usage
|
|
87
|
+
* ```typescript
|
|
88
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
89
|
+
* import * as std from "@pulumi/std";
|
|
90
|
+
* import * as tls from "@pulumi/tls";
|
|
91
|
+
*
|
|
92
|
+
* const exampleContent = std.file({
|
|
93
|
+
* input: "example.pem",
|
|
94
|
+
* }).then(invoke => tls.getCertificate({
|
|
95
|
+
* content: invoke.result,
|
|
96
|
+
* }));
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* <!--
|
|
100
|
+
* Schema ORIGINALLY generated by tfplugindocs,
|
|
101
|
+
* then manually tweaked to circumvent current limitations.
|
|
102
|
+
*
|
|
103
|
+
* This should be revisited, once https://github.com/hashicorp/terraform-plugin-docs/issues/66 is resolved.
|
|
104
|
+
* -->
|
|
105
|
+
*/
|
|
18
106
|
function getCertificateOutput(args, opts) {
|
|
19
107
|
args = args || {};
|
|
20
108
|
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
|
package/getCertificate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCertificate.js","sourceRoot":"","sources":["../getCertificate.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC,SAAgB,cAAc,CAAC,IAAyB,EAAE,IAA2B;IACjF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,yCAAyC,EAAE;QACpE,SAAS,EAAE,IAAI,CAAC,OAAO;QACvB,KAAK,EAAE,IAAI,CAAC,GAAG;QACf,aAAa,EAAE,IAAI,CAAC,WAAW;KAClC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AARD,wCAQC;AA6CD,SAAgB,oBAAoB,CAAC,IAA+B,EAAE,IAAiC;IACnG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,yCAAyC,EAAE;QAC1E,SAAS,EAAE,IAAI,CAAC,OAAO;QACvB,KAAK,EAAE,IAAI,CAAC,GAAG;QACf,aAAa,EAAE,IAAI,CAAC,WAAW;KAClC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AARD,oDAQC"}
|
|
1
|
+
{"version":3,"file":"getCertificate.js","sourceRoot":"","sources":["../getCertificate.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,SAAgB,cAAc,CAAC,IAAyB,EAAE,IAA2B;IACjF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,yCAAyC,EAAE;QACpE,SAAS,EAAE,IAAI,CAAC,OAAO;QACvB,KAAK,EAAE,IAAI,CAAC,GAAG;QACf,aAAa,EAAE,IAAI,CAAC,WAAW;KAClC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AARD,wCAQC;AA6CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,SAAgB,oBAAoB,CAAC,IAA+B,EAAE,IAAiC;IACnG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,yCAAyC,EAAE;QAC1E,SAAS,EAAE,IAAI,CAAC,OAAO;QACvB,KAAK,EAAE,IAAI,CAAC,GAAG;QACf,aAAa,EAAE,IAAI,CAAC,WAAW;KAClC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AARD,oDAQC"}
|
package/locallySignedCert.d.ts
CHANGED
|
@@ -1,4 +1,53 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a TLS certificate in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) format using a Certificate Signing Request (CSR) and signs it with a provided (local) Certificate Authority (CA).
|
|
4
|
+
*
|
|
5
|
+
* > **Note** Locally-signed certificates are generally only trusted by client software when
|
|
6
|
+
* setup to use the provided CA. They are normally used in development environments
|
|
7
|
+
* or when deployed internally to an organization.
|
|
8
|
+
*
|
|
9
|
+
* ## Example Usage
|
|
10
|
+
*
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
13
|
+
* import * as std from "@pulumi/std";
|
|
14
|
+
* import * as tls from "@pulumi/tls";
|
|
15
|
+
*
|
|
16
|
+
* const example = new tls.LocallySignedCert("example", {
|
|
17
|
+
* certRequestPem: std.file({
|
|
18
|
+
* input: "cert_request.pem",
|
|
19
|
+
* }).then(invoke => invoke.result),
|
|
20
|
+
* caPrivateKeyPem: std.file({
|
|
21
|
+
* input: "ca_private_key.pem",
|
|
22
|
+
* }).then(invoke => invoke.result),
|
|
23
|
+
* caCertPem: std.file({
|
|
24
|
+
* input: "ca_cert.pem",
|
|
25
|
+
* }).then(invoke => invoke.result),
|
|
26
|
+
* validityPeriodHours: 12,
|
|
27
|
+
* allowedUses: [
|
|
28
|
+
* "key_encipherment",
|
|
29
|
+
* "digital_signature",
|
|
30
|
+
* "server_auth",
|
|
31
|
+
* ],
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* ## Automatic Renewal
|
|
36
|
+
*
|
|
37
|
+
* This resource considers its instances to have been deleted after either their validity
|
|
38
|
+
* periods ends (i.e. beyond the `validityPeriodHours`)
|
|
39
|
+
* or the early renewal period is reached (i.e. within the `earlyRenewalHours`):
|
|
40
|
+
* when this happens, the `readyForRenewal` attribute will be `true`.
|
|
41
|
+
* At this time, applying the Terraform configuration will cause a new certificate to be
|
|
42
|
+
* generated for the instance.
|
|
43
|
+
*
|
|
44
|
+
* Therefore in a development environment with frequent deployments it may be convenient
|
|
45
|
+
* to set a relatively-short expiration time and use early renewal to automatically provision
|
|
46
|
+
* a new certificate when the current one is about to expire.
|
|
47
|
+
*
|
|
48
|
+
* The creation of a new certificate may of course cause dependent resources to be updated
|
|
49
|
+
* or replaced, depending on the lifecycle rules applying to those resources.
|
|
50
|
+
*/
|
|
2
51
|
export declare class LocallySignedCert extends pulumi.CustomResource {
|
|
3
52
|
/**
|
|
4
53
|
* Get an existing LocallySignedCert resource's state with the given name, ID, and optional extra
|
|
@@ -39,6 +88,9 @@ export declare class LocallySignedCert extends pulumi.CustomResource {
|
|
|
39
88
|
* Certificate request data in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) format.
|
|
40
89
|
*/
|
|
41
90
|
readonly certRequestPem: pulumi.Output<string>;
|
|
91
|
+
/**
|
|
92
|
+
* The resource will consider the certificate to have expired the given number of hours before its actual expiry time. This can be useful to deploy an updated certificate in advance of the expiration of the current certificate. However, the old certificate remains valid until its true expiration time, since this resource does not (and cannot) support certificate revocation. Also, this advance update can only be performed should the Terraform configuration be applied during the early renewal period. (default: `0`)
|
|
93
|
+
*/
|
|
42
94
|
readonly earlyRenewalHours: pulumi.Output<number>;
|
|
43
95
|
/**
|
|
44
96
|
* Is the generated certificate representing a Certificate Authority (CA) (default: `false`).
|
|
@@ -105,6 +157,9 @@ export interface LocallySignedCertState {
|
|
|
105
157
|
* Certificate request data in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) format.
|
|
106
158
|
*/
|
|
107
159
|
certRequestPem?: pulumi.Input<string>;
|
|
160
|
+
/**
|
|
161
|
+
* The resource will consider the certificate to have expired the given number of hours before its actual expiry time. This can be useful to deploy an updated certificate in advance of the expiration of the current certificate. However, the old certificate remains valid until its true expiration time, since this resource does not (and cannot) support certificate revocation. Also, this advance update can only be performed should the Terraform configuration be applied during the early renewal period. (default: `0`)
|
|
162
|
+
*/
|
|
108
163
|
earlyRenewalHours?: pulumi.Input<number>;
|
|
109
164
|
/**
|
|
110
165
|
* Is the generated certificate representing a Certificate Authority (CA) (default: `false`).
|
|
@@ -155,6 +210,9 @@ export interface LocallySignedCertArgs {
|
|
|
155
210
|
* Certificate request data in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) format.
|
|
156
211
|
*/
|
|
157
212
|
certRequestPem: pulumi.Input<string>;
|
|
213
|
+
/**
|
|
214
|
+
* The resource will consider the certificate to have expired the given number of hours before its actual expiry time. This can be useful to deploy an updated certificate in advance of the expiration of the current certificate. However, the old certificate remains valid until its true expiration time, since this resource does not (and cannot) support certificate revocation. Also, this advance update can only be performed should the Terraform configuration be applied during the early renewal period. (default: `0`)
|
|
215
|
+
*/
|
|
158
216
|
earlyRenewalHours?: pulumi.Input<number>;
|
|
159
217
|
/**
|
|
160
218
|
* Is the generated certificate representing a Certificate Authority (CA) (default: `false`).
|
package/locallySignedCert.js
CHANGED
|
@@ -5,6 +5,55 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.LocallySignedCert = void 0;
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
|
+
/**
|
|
9
|
+
* Creates a TLS certificate in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) format using a Certificate Signing Request (CSR) and signs it with a provided (local) Certificate Authority (CA).
|
|
10
|
+
*
|
|
11
|
+
* > **Note** Locally-signed certificates are generally only trusted by client software when
|
|
12
|
+
* setup to use the provided CA. They are normally used in development environments
|
|
13
|
+
* or when deployed internally to an organization.
|
|
14
|
+
*
|
|
15
|
+
* ## Example Usage
|
|
16
|
+
*
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
19
|
+
* import * as std from "@pulumi/std";
|
|
20
|
+
* import * as tls from "@pulumi/tls";
|
|
21
|
+
*
|
|
22
|
+
* const example = new tls.LocallySignedCert("example", {
|
|
23
|
+
* certRequestPem: std.file({
|
|
24
|
+
* input: "cert_request.pem",
|
|
25
|
+
* }).then(invoke => invoke.result),
|
|
26
|
+
* caPrivateKeyPem: std.file({
|
|
27
|
+
* input: "ca_private_key.pem",
|
|
28
|
+
* }).then(invoke => invoke.result),
|
|
29
|
+
* caCertPem: std.file({
|
|
30
|
+
* input: "ca_cert.pem",
|
|
31
|
+
* }).then(invoke => invoke.result),
|
|
32
|
+
* validityPeriodHours: 12,
|
|
33
|
+
* allowedUses: [
|
|
34
|
+
* "key_encipherment",
|
|
35
|
+
* "digital_signature",
|
|
36
|
+
* "server_auth",
|
|
37
|
+
* ],
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* ## Automatic Renewal
|
|
42
|
+
*
|
|
43
|
+
* This resource considers its instances to have been deleted after either their validity
|
|
44
|
+
* periods ends (i.e. beyond the `validityPeriodHours`)
|
|
45
|
+
* or the early renewal period is reached (i.e. within the `earlyRenewalHours`):
|
|
46
|
+
* when this happens, the `readyForRenewal` attribute will be `true`.
|
|
47
|
+
* At this time, applying the Terraform configuration will cause a new certificate to be
|
|
48
|
+
* generated for the instance.
|
|
49
|
+
*
|
|
50
|
+
* Therefore in a development environment with frequent deployments it may be convenient
|
|
51
|
+
* to set a relatively-short expiration time and use early renewal to automatically provision
|
|
52
|
+
* a new certificate when the current one is about to expire.
|
|
53
|
+
*
|
|
54
|
+
* The creation of a new certificate may of course cause dependent resources to be updated
|
|
55
|
+
* or replaced, depending on the lifecycle rules applying to those resources.
|
|
56
|
+
*/
|
|
8
57
|
class LocallySignedCert extends pulumi.CustomResource {
|
|
9
58
|
/**
|
|
10
59
|
* Get an existing LocallySignedCert resource's state with the given name, ID, and optional extra
|
package/locallySignedCert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locallySignedCert.js","sourceRoot":"","sources":["../locallySignedCert.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC,MAAa,iBAAkB,SAAQ,MAAM,CAAC,cAAc;IACxD;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAA8B,EAAE,IAAmC;QAC5H,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAO,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,iBAAiB,CAAC,YAAY,CAAC;IAClE,CAAC;
|
|
1
|
+
{"version":3,"file":"locallySignedCert.js","sourceRoot":"","sources":["../locallySignedCert.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pulumi/tls",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.1-alpha.1774890786",
|
|
4
4
|
"description": "A Pulumi package to create TLS resources in Pulumi programs.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pulumi",
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
"pulumi": {
|
|
23
23
|
"resource": true,
|
|
24
24
|
"name": "tls",
|
|
25
|
-
"version": "5.3.
|
|
25
|
+
"version": "5.3.1-alpha.1774890786"
|
|
26
26
|
}
|
|
27
27
|
}
|
package/privateKey.d.ts
CHANGED
|
@@ -1,4 +1,50 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
/**
|
|
3
|
+
* > If the managed resource supports a write-only attribute for the private key (first introduced in Terraform 1.11), then the ephemeral variant of `tls.PrivateKey` should be used, when possible, to avoid storing the private key data in the plan or state file.
|
|
4
|
+
*
|
|
5
|
+
* Creates a PEM (and OpenSSH) formatted private key.
|
|
6
|
+
*
|
|
7
|
+
* Generates a secure private key and encodes it in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) and [OpenSSH PEM (RFC 4716)](https://datatracker.ietf.org/doc/html/rfc4716) formats. This resource is primarily intended for easily bootstrapping throwaway development environments.
|
|
8
|
+
*
|
|
9
|
+
* > **Security Notice** The private key generated by this resource will
|
|
10
|
+
* be stored *unencrypted* in your Terraform state file. **Use of this resource
|
|
11
|
+
* for production deployments is *not* recommended**. Instead, generate
|
|
12
|
+
* a private key file outside of Terraform and distribute it securely
|
|
13
|
+
* to the system where Terraform will be run.
|
|
14
|
+
*
|
|
15
|
+
* This is a *logical resource*, so it contributes only to the current Terraform
|
|
16
|
+
* state and does not create any external managed resources.
|
|
17
|
+
*
|
|
18
|
+
* ## Example Usage
|
|
19
|
+
*
|
|
20
|
+
* ```typescript
|
|
21
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
22
|
+
* import * as tls from "@pulumi/tls";
|
|
23
|
+
*
|
|
24
|
+
* // ECDSA key with P384 elliptic curve
|
|
25
|
+
* const ecdsa_p384_example = new tls.PrivateKey("ecdsa-p384-example", {
|
|
26
|
+
* algorithm: "ECDSA",
|
|
27
|
+
* ecdsaCurve: "P384",
|
|
28
|
+
* });
|
|
29
|
+
* // RSA key of size 4096 bits
|
|
30
|
+
* const rsa_4096_example = new tls.PrivateKey("rsa-4096-example", {
|
|
31
|
+
* algorithm: "RSA",
|
|
32
|
+
* rsaBits: 4096,
|
|
33
|
+
* });
|
|
34
|
+
* // ED25519 key
|
|
35
|
+
* const ed25519_example = new tls.PrivateKey("ed25519-example", {algorithm: "ED25519"});
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* ## Generating a New Key
|
|
39
|
+
*
|
|
40
|
+
* Since a private key is a logical resource that lives only in the Terraform state,
|
|
41
|
+
* it will persist until it is explicitly destroyed by the user.
|
|
42
|
+
*
|
|
43
|
+
* In order to force the generation of a new key within an existing state, the
|
|
44
|
+
* private key instance can be "tainted":
|
|
45
|
+
*
|
|
46
|
+
* A new key will then be generated on the next ``pulumi up``.
|
|
47
|
+
*/
|
|
2
48
|
export declare class PrivateKey extends pulumi.CustomResource {
|
|
3
49
|
/**
|
|
4
50
|
* Get an existing PrivateKey resource's state with the given name, ID, and optional extra
|
package/privateKey.js
CHANGED
|
@@ -5,6 +5,52 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.PrivateKey = void 0;
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
|
+
/**
|
|
9
|
+
* > If the managed resource supports a write-only attribute for the private key (first introduced in Terraform 1.11), then the ephemeral variant of `tls.PrivateKey` should be used, when possible, to avoid storing the private key data in the plan or state file.
|
|
10
|
+
*
|
|
11
|
+
* Creates a PEM (and OpenSSH) formatted private key.
|
|
12
|
+
*
|
|
13
|
+
* Generates a secure private key and encodes it in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) and [OpenSSH PEM (RFC 4716)](https://datatracker.ietf.org/doc/html/rfc4716) formats. This resource is primarily intended for easily bootstrapping throwaway development environments.
|
|
14
|
+
*
|
|
15
|
+
* > **Security Notice** The private key generated by this resource will
|
|
16
|
+
* be stored *unencrypted* in your Terraform state file. **Use of this resource
|
|
17
|
+
* for production deployments is *not* recommended**. Instead, generate
|
|
18
|
+
* a private key file outside of Terraform and distribute it securely
|
|
19
|
+
* to the system where Terraform will be run.
|
|
20
|
+
*
|
|
21
|
+
* This is a *logical resource*, so it contributes only to the current Terraform
|
|
22
|
+
* state and does not create any external managed resources.
|
|
23
|
+
*
|
|
24
|
+
* ## Example Usage
|
|
25
|
+
*
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
28
|
+
* import * as tls from "@pulumi/tls";
|
|
29
|
+
*
|
|
30
|
+
* // ECDSA key with P384 elliptic curve
|
|
31
|
+
* const ecdsa_p384_example = new tls.PrivateKey("ecdsa-p384-example", {
|
|
32
|
+
* algorithm: "ECDSA",
|
|
33
|
+
* ecdsaCurve: "P384",
|
|
34
|
+
* });
|
|
35
|
+
* // RSA key of size 4096 bits
|
|
36
|
+
* const rsa_4096_example = new tls.PrivateKey("rsa-4096-example", {
|
|
37
|
+
* algorithm: "RSA",
|
|
38
|
+
* rsaBits: 4096,
|
|
39
|
+
* });
|
|
40
|
+
* // ED25519 key
|
|
41
|
+
* const ed25519_example = new tls.PrivateKey("ed25519-example", {algorithm: "ED25519"});
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* ## Generating a New Key
|
|
45
|
+
*
|
|
46
|
+
* Since a private key is a logical resource that lives only in the Terraform state,
|
|
47
|
+
* it will persist until it is explicitly destroyed by the user.
|
|
48
|
+
*
|
|
49
|
+
* In order to force the generation of a new key within an existing state, the
|
|
50
|
+
* private key instance can be "tainted":
|
|
51
|
+
*
|
|
52
|
+
* A new key will then be generated on the next ``pulumi up``.
|
|
53
|
+
*/
|
|
8
54
|
class PrivateKey extends pulumi.CustomResource {
|
|
9
55
|
/**
|
|
10
56
|
* Get an existing PrivateKey resource's state with the given name, ID, and optional extra
|
package/privateKey.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privateKey.js","sourceRoot":"","sources":["../privateKey.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"privateKey.js","sourceRoot":"","sources":["../privateKey.ts"],"names":[],"mappings":"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"}
|
package/selfSignedCert.d.ts
CHANGED
|
@@ -1,6 +1,55 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
2
|
import * as inputs from "./types/input";
|
|
3
3
|
import * as outputs from "./types/output";
|
|
4
|
+
/**
|
|
5
|
+
* Creates a **self-signed** TLS certificate in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) format.
|
|
6
|
+
*
|
|
7
|
+
* > **Warning** Self-signed certificates are usually used only in development environments
|
|
8
|
+
* or applications deployed internally to an organization.
|
|
9
|
+
* Certificates of this type are generally not trusted by client software such
|
|
10
|
+
* as web browsers. Therefore clients are likely to generate trust warnings when
|
|
11
|
+
* connecting to a server that has a self-signed certificate.
|
|
12
|
+
*
|
|
13
|
+
* ## Example Usage
|
|
14
|
+
*
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
17
|
+
* import * as std from "@pulumi/std";
|
|
18
|
+
* import * as tls from "@pulumi/tls";
|
|
19
|
+
*
|
|
20
|
+
* const example = new tls.SelfSignedCert("example", {
|
|
21
|
+
* privateKeyPem: std.file({
|
|
22
|
+
* input: "private_key.pem",
|
|
23
|
+
* }).then(invoke => invoke.result),
|
|
24
|
+
* subject: {
|
|
25
|
+
* commonName: "example.com",
|
|
26
|
+
* organization: "ACME Examples, Inc",
|
|
27
|
+
* },
|
|
28
|
+
* validityPeriodHours: 12,
|
|
29
|
+
* allowedUses: [
|
|
30
|
+
* "key_encipherment",
|
|
31
|
+
* "digital_signature",
|
|
32
|
+
* "server_auth",
|
|
33
|
+
* ],
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* ## Automatic Renewal
|
|
38
|
+
*
|
|
39
|
+
* This resource considers its instances to have been deleted after either their validity
|
|
40
|
+
* periods ends (i.e. beyond the `validityPeriodHours`)
|
|
41
|
+
* or the early renewal period is reached (i.e. within the `earlyRenewalHours`):
|
|
42
|
+
* when this happens, the `readyForRenewal` attribute will be `true`.
|
|
43
|
+
* At this time, applying the Terraform configuration will cause a new certificate to be
|
|
44
|
+
* generated for the instance.
|
|
45
|
+
*
|
|
46
|
+
* Therefore in a development environment with frequent deployments it may be convenient
|
|
47
|
+
* to set a relatively-short expiration time and use early renewal to automatically provision
|
|
48
|
+
* a new certificate when the current one is about to expire.
|
|
49
|
+
*
|
|
50
|
+
* The creation of a new certificate may of course cause dependent resources to be updated
|
|
51
|
+
* or replaced, depending on the lifecycle rules applying to those resources.
|
|
52
|
+
*/
|
|
4
53
|
export declare class SelfSignedCert extends pulumi.CustomResource {
|
|
5
54
|
/**
|
|
6
55
|
* Get an existing SelfSignedCert resource's state with the given name, ID, and optional extra
|
|
@@ -29,6 +78,9 @@ export declare class SelfSignedCert extends pulumi.CustomResource {
|
|
|
29
78
|
* List of DNS names for which a certificate is being requested (i.e. certificate subjects).
|
|
30
79
|
*/
|
|
31
80
|
readonly dnsNames: pulumi.Output<string[] | undefined>;
|
|
81
|
+
/**
|
|
82
|
+
* The resource will consider the certificate to have expired the given number of hours before its actual expiry time. This can be useful to deploy an updated certificate in advance of the expiration of the current certificate. However, the old certificate remains valid until its true expiration time, since this resource does not (and cannot) support certificate revocation. Also, this advance update can only be performed should the Terraform configuration be applied during the early renewal period. (default: `0`)
|
|
83
|
+
*/
|
|
32
84
|
readonly earlyRenewalHours: pulumi.Output<number>;
|
|
33
85
|
/**
|
|
34
86
|
* List of IP addresses for which a certificate is being requested (i.e. certificate subjects).
|
|
@@ -107,6 +159,9 @@ export interface SelfSignedCertState {
|
|
|
107
159
|
* List of DNS names for which a certificate is being requested (i.e. certificate subjects).
|
|
108
160
|
*/
|
|
109
161
|
dnsNames?: pulumi.Input<pulumi.Input<string>[]>;
|
|
162
|
+
/**
|
|
163
|
+
* The resource will consider the certificate to have expired the given number of hours before its actual expiry time. This can be useful to deploy an updated certificate in advance of the expiration of the current certificate. However, the old certificate remains valid until its true expiration time, since this resource does not (and cannot) support certificate revocation. Also, this advance update can only be performed should the Terraform configuration be applied during the early renewal period. (default: `0`)
|
|
164
|
+
*/
|
|
110
165
|
earlyRenewalHours?: pulumi.Input<number>;
|
|
111
166
|
/**
|
|
112
167
|
* List of IP addresses for which a certificate is being requested (i.e. certificate subjects).
|
|
@@ -173,6 +228,9 @@ export interface SelfSignedCertArgs {
|
|
|
173
228
|
* List of DNS names for which a certificate is being requested (i.e. certificate subjects).
|
|
174
229
|
*/
|
|
175
230
|
dnsNames?: pulumi.Input<pulumi.Input<string>[]>;
|
|
231
|
+
/**
|
|
232
|
+
* The resource will consider the certificate to have expired the given number of hours before its actual expiry time. This can be useful to deploy an updated certificate in advance of the expiration of the current certificate. However, the old certificate remains valid until its true expiration time, since this resource does not (and cannot) support certificate revocation. Also, this advance update can only be performed should the Terraform configuration be applied during the early renewal period. (default: `0`)
|
|
233
|
+
*/
|
|
176
234
|
earlyRenewalHours?: pulumi.Input<number>;
|
|
177
235
|
/**
|
|
178
236
|
* List of IP addresses for which a certificate is being requested (i.e. certificate subjects).
|
package/selfSignedCert.js
CHANGED
|
@@ -5,6 +5,55 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.SelfSignedCert = void 0;
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
|
+
/**
|
|
9
|
+
* Creates a **self-signed** TLS certificate in [PEM (RFC 1421)](https://datatracker.ietf.org/doc/html/rfc1421) format.
|
|
10
|
+
*
|
|
11
|
+
* > **Warning** Self-signed certificates are usually used only in development environments
|
|
12
|
+
* or applications deployed internally to an organization.
|
|
13
|
+
* Certificates of this type are generally not trusted by client software such
|
|
14
|
+
* as web browsers. Therefore clients are likely to generate trust warnings when
|
|
15
|
+
* connecting to a server that has a self-signed certificate.
|
|
16
|
+
*
|
|
17
|
+
* ## Example Usage
|
|
18
|
+
*
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
21
|
+
* import * as std from "@pulumi/std";
|
|
22
|
+
* import * as tls from "@pulumi/tls";
|
|
23
|
+
*
|
|
24
|
+
* const example = new tls.SelfSignedCert("example", {
|
|
25
|
+
* privateKeyPem: std.file({
|
|
26
|
+
* input: "private_key.pem",
|
|
27
|
+
* }).then(invoke => invoke.result),
|
|
28
|
+
* subject: {
|
|
29
|
+
* commonName: "example.com",
|
|
30
|
+
* organization: "ACME Examples, Inc",
|
|
31
|
+
* },
|
|
32
|
+
* validityPeriodHours: 12,
|
|
33
|
+
* allowedUses: [
|
|
34
|
+
* "key_encipherment",
|
|
35
|
+
* "digital_signature",
|
|
36
|
+
* "server_auth",
|
|
37
|
+
* ],
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* ## Automatic Renewal
|
|
42
|
+
*
|
|
43
|
+
* This resource considers its instances to have been deleted after either their validity
|
|
44
|
+
* periods ends (i.e. beyond the `validityPeriodHours`)
|
|
45
|
+
* or the early renewal period is reached (i.e. within the `earlyRenewalHours`):
|
|
46
|
+
* when this happens, the `readyForRenewal` attribute will be `true`.
|
|
47
|
+
* At this time, applying the Terraform configuration will cause a new certificate to be
|
|
48
|
+
* generated for the instance.
|
|
49
|
+
*
|
|
50
|
+
* Therefore in a development environment with frequent deployments it may be convenient
|
|
51
|
+
* to set a relatively-short expiration time and use early renewal to automatically provision
|
|
52
|
+
* a new certificate when the current one is about to expire.
|
|
53
|
+
*
|
|
54
|
+
* The creation of a new certificate may of course cause dependent resources to be updated
|
|
55
|
+
* or replaced, depending on the lifecycle rules applying to those resources.
|
|
56
|
+
*/
|
|
8
57
|
class SelfSignedCert extends pulumi.CustomResource {
|
|
9
58
|
/**
|
|
10
59
|
* Get an existing SelfSignedCert resource's state with the given name, ID, and optional extra
|
package/selfSignedCert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selfSignedCert.js","sourceRoot":"","sources":["../selfSignedCert.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC,MAAa,cAAe,SAAQ,MAAM,CAAC,cAAc;IACrD;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAA2B,EAAE,IAAmC;QACzH,OAAO,IAAI,cAAc,CAAC,IAAI,EAAO,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,cAAc,CAAC,YAAY,CAAC;IAC/D,CAAC;
|
|
1
|
+
{"version":3,"file":"selfSignedCert.js","sourceRoot":"","sources":["../selfSignedCert.ts"],"names":[],"mappings":"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"}
|