diff --git a/docs/guide/other/changelogs/CHANGELOG.md b/docs/guide/other/changelogs/CHANGELOG.md index c98a552f..2e0b2e61 100644 --- a/docs/guide/other/changelogs/CHANGELOG.md +++ b/docs/guide/other/changelogs/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.27.3](https://github.com/certd/certd/compare/v1.27.2...v1.27.3) (2024-11-13) + +### Bug Fixes + +* 修复偶发性cname一直验证超时的bug ([d2ce72e](https://github.com/certd/certd/commit/d2ce72e4aaacdf726ba8b91fcd71db40a27714ba)) +* 修复邮件配置,忽略证书校验设置不生效的bug ([66a9690](https://github.com/certd/certd/commit/66a9690dc958732e1b3c672d965db502296446f9)) +* 修复ipv6未开启情况下,请求带有ipv6地址域名报ETIMEDOUT的bug ([a9a0967](https://github.com/certd/certd/commit/a9a0967a6f1d0bd27e69f3ec52c31d90d470bc23)) + +### Performance Improvements + +* 修复站点个性化,浏览器标题没有生效的bug ([bcfac02](https://github.com/certd/certd/commit/bcfac02c96ceaf23d1a0b05b48d8047da933beaf)) +* 优化上传到主机插 路径选择,根据证书格式显示 ([8c3f86c](https://github.com/certd/certd/commit/8c3f86c6909ed91f48bb2880e78834e22f6f6a29)) +* 支持jks ([889eaae](https://github.com/certd/certd/commit/889eaaea92818f628b922dae540c026630611707)) +* ipv6支持 ([da6ac16](https://github.com/certd/certd/commit/da6ac1626b3574be2fabeeb18a1f10d60bdcbe49)) + ## [1.27.2](https://github.com/certd/certd/compare/v1.27.1...v1.27.2) (2024-11-08) ### Bug Fixes diff --git a/packages/core/acme-client/docs/crypto.md b/packages/core/acme-client/docs/crypto.md index 85754ea5..488d60f5 100644 --- a/packages/core/acme-client/docs/crypto.md +++ b/packages/core/acme-client/docs/crypto.md @@ -6,6 +6,38 @@ +## Constants + +
+
createPrivateEcdsaKeyPromise.<buffer>
+

Generate a private ECDSA key

+
+
getPublicKeybuffer
+

Get a public key derived from a RSA or ECDSA key

+
+
getPemBodyAsB64ustring
+

Parse body of PEM encoded object and return a Base64URL string +If multiple objects are chained, the first body will be returned

+
+
readCsrDomainsobject
+

Read domains from a Certificate Signing Request

+
+
readCertificateInfoobject
+

Read information from a certificate +If multiple certificates are chained, the first will be read

+
+
createCsrPromise.<Array.<buffer>>
+

Create a Certificate Signing Request

+
+
createAlpnCertificatePromise.<Array.<buffer>>
+

Create a self-signed ALPN certificate for TLS-ALPN-01 challenges

+

https://datatracker.ietf.org/doc/html/rfc8737

+
+
isAlpnCertificateAuthorizationValidboolean
+

Validate that a ALPN certificate contains the expected key authorization

+
+
+ ## Functions
@@ -15,12 +47,6 @@
createPrivateKey()

Alias of createPrivateRsaKey()

-
createPrivateEcdsaKey([namedCurve])Promise.<buffer>
-

Generate a private ECDSA key

-
-
getPublicKey(keyPem)buffer
-

Get a public key derived from a RSA or ECDSA key

-
getJwk(keyPem)object

Get a JSON Web Key derived from a RSA or ECDSA key

https://datatracker.ietf.org/doc/html/rfc7517

@@ -28,27 +54,6 @@
splitPemChain(chainPem)Array.<string>

Split chain of PEM encoded objects from string into array

-
getPemBodyAsB64u(pem)string
-

Parse body of PEM encoded object and return a Base64URL string -If multiple objects are chained, the first body will be returned

-
-
readCsrDomains(csrPem)object
-

Read domains from a Certificate Signing Request

-
-
readCertificateInfo(certPem)object
-

Read information from a certificate -If multiple certificates are chained, the first will be read

-
-
createCsr(data, [keyPem])Promise.<Array.<buffer>>
-

Create a Certificate Signing Request

-
-
createAlpnCertificate(authz, keyAuthorization, [keyPem])Promise.<Array.<buffer>>
-

Create a self-signed ALPN certificate for TLS-ALPN-01 challenges

-

https://datatracker.ietf.org/doc/html/rfc8737

-
-
isAlpnCertificateAuthorizationValid(certPem, keyAuthorization)boolean
-

Validate that a ALPN certificate contains the expected key authorization

-
@@ -57,40 +62,12 @@ If multiple certificates are chained, the first will be read

Native Node.js crypto interface **Kind**: global namespace - - -## createPrivateRsaKey([modulusLength]) ⇒ Promise.<buffer> -Generate a private RSA key - -**Kind**: global function -**Returns**: Promise.<buffer> - PEM encoded private RSA key - -| Param | Type | Default | Description | -| --- | --- | --- | --- | -| [modulusLength] | number | 2048 | Size of the keys modulus in bits, default: `2048` | - -**Example** -Generate private RSA key -```js -const privateKey = await acme.crypto.createPrivateRsaKey(); -``` -**Example** -Private RSA key with modulus size 4096 -```js -const privateKey = await acme.crypto.createPrivateRsaKey(4096); -``` - - -## createPrivateKey() -Alias of `createPrivateRsaKey()` - -**Kind**: global function -## createPrivateEcdsaKey([namedCurve]) ⇒ Promise.<buffer> +## createPrivateEcdsaKey ⇒ Promise.<buffer> Generate a private ECDSA key -**Kind**: global function +**Kind**: global constant **Returns**: Promise.<buffer> - PEM encoded private ECDSA key | Param | Type | Description | @@ -109,10 +86,10 @@ const privateKey = await acme.crypto.createPrivateEcdsaKey('P-384'); ``` -## getPublicKey(keyPem) ⇒ buffer +## getPublicKey ⇒ buffer Get a public key derived from a RSA or ECDSA key -**Kind**: global function +**Kind**: global constant **Returns**: buffer - PEM encoded public key | Param | Type | Description | @@ -124,44 +101,13 @@ Get public key ```js const publicKey = acme.crypto.getPublicKey(privateKey); ``` - - -## getJwk(keyPem) ⇒ object -Get a JSON Web Key derived from a RSA or ECDSA key - -https://datatracker.ietf.org/doc/html/rfc7517 - -**Kind**: global function -**Returns**: object - JSON Web Key - -| Param | Type | Description | -| --- | --- | --- | -| keyPem | buffer \| string | PEM encoded private or public key | - -**Example** -Get JWK -```js -const jwk = acme.crypto.getJwk(privateKey); -``` - - -## splitPemChain(chainPem) ⇒ Array.<string> -Split chain of PEM encoded objects from string into array - -**Kind**: global function -**Returns**: Array.<string> - Array of PEM objects including headers - -| Param | Type | Description | -| --- | --- | --- | -| chainPem | buffer \| string | PEM encoded object chain | - -## getPemBodyAsB64u(pem) ⇒ string +## getPemBodyAsB64u ⇒ string Parse body of PEM encoded object and return a Base64URL string If multiple objects are chained, the first body will be returned -**Kind**: global function +**Kind**: global constant **Returns**: string - Base64URL-encoded body | Param | Type | Description | @@ -170,10 +116,10 @@ If multiple objects are chained, the first body will be returned -## readCsrDomains(csrPem) ⇒ object +## readCsrDomains ⇒ object Read domains from a Certificate Signing Request -**Kind**: global function +**Kind**: global constant **Returns**: object - {commonName, altNames} | Param | Type | Description | @@ -190,11 +136,11 @@ console.log(`Alt names: ${altNames.join(', ')}`); ``` -## readCertificateInfo(certPem) ⇒ object +## readCertificateInfo ⇒ object Read information from a certificate If multiple certificates are chained, the first will be read -**Kind**: global function +**Kind**: global constant **Returns**: object - Certificate info | Param | Type | Description | @@ -215,10 +161,10 @@ console.log(`Alt names: ${altNames.join(', ')}`); ``` -## createCsr(data, [keyPem]) ⇒ Promise.<Array.<buffer>> +## createCsr ⇒ Promise.<Array.<buffer>> Create a Certificate Signing Request -**Kind**: global function +**Kind**: global constant **Returns**: Promise.<Array.<buffer>> - [privateKey, certificateSigningRequest] | Param | Type | Description | @@ -276,12 +222,12 @@ const [, certificateRequest] = await acme.crypto.createCsr({ ``` -## createAlpnCertificate(authz, keyAuthorization, [keyPem]) ⇒ Promise.<Array.<buffer>> +## createAlpnCertificate ⇒ Promise.<Array.<buffer>> Create a self-signed ALPN certificate for TLS-ALPN-01 challenges https://datatracker.ietf.org/doc/html/rfc8737 -**Kind**: global function +**Kind**: global constant **Returns**: Promise.<Array.<buffer>> - [privateKey, certificate] | Param | Type | Description | @@ -303,10 +249,10 @@ const [, alpnCertificate] = await acme.crypto.createAlpnCertificate(authz, keyAu ``` -## isAlpnCertificateAuthorizationValid(certPem, keyAuthorization) ⇒ boolean +## isAlpnCertificateAuthorizationValid ⇒ boolean Validate that a ALPN certificate contains the expected key authorization -**Kind**: global function +**Kind**: global constant **Returns**: boolean - True when valid | Param | Type | Description | @@ -314,3 +260,62 @@ Validate that a ALPN certificate contains the expected key authorization | certPem | buffer \| string | PEM encoded certificate | | keyAuthorization | string | Expected challenge key authorization | + + +## createPrivateRsaKey([modulusLength]) ⇒ Promise.<buffer> +Generate a private RSA key + +**Kind**: global function +**Returns**: Promise.<buffer> - PEM encoded private RSA key + +| Param | Type | Description | +| --- | --- | --- | +| [modulusLength] | number | Size of the keys modulus in bits, default: `2048` | + +**Example** +Generate private RSA key +```js +const privateKey = await acme.crypto.createPrivateRsaKey(); +``` +**Example** +Private RSA key with modulus size 4096 +```js +const privateKey = await acme.crypto.createPrivateRsaKey(4096); +``` + + +## createPrivateKey() +Alias of `createPrivateRsaKey()` + +**Kind**: global function + + +## getJwk(keyPem) ⇒ object +Get a JSON Web Key derived from a RSA or ECDSA key + +https://datatracker.ietf.org/doc/html/rfc7517 + +**Kind**: global function +**Returns**: object - JSON Web Key + +| Param | Type | Description | +| --- | --- | --- | +| keyPem | buffer \| string | PEM encoded private or public key | + +**Example** +Get JWK +```js +const jwk = acme.crypto.getJwk(privateKey); +``` + + +## splitPemChain(chainPem) ⇒ Array.<string> +Split chain of PEM encoded objects from string into array + +**Kind**: global function +**Returns**: Array.<string> - Array of PEM objects including headers + +| Param | Type | Description | +| --- | --- | --- | +| chainPem | buffer \| string | PEM encoded object chain | + diff --git a/packages/core/acme-client/docs/forge.md b/packages/core/acme-client/docs/forge.md index 65dcab8f..799cc0e1 100644 --- a/packages/core/acme-client/docs/forge.md +++ b/packages/core/acme-client/docs/forge.md @@ -8,37 +8,42 @@ major release. Please migrate to the new acme.crypto interface at y +## Constants + +
+
createPublicKeyPromise.<buffer>
+

Create public key from a private RSA key

+
+
getPemBodystring
+

Parse body of PEM encoded object from buffer or string +If multiple objects are chained, the first body will be returned

+
+
splitPemChainArray.<string>
+

Split chain of PEM encoded objects from buffer or string into array

+
+
getModulusPromise.<buffer>
+

Get modulus

+
+
getPublicExponentPromise.<buffer>
+

Get public exponent

+
+
readCsrDomainsPromise.<object>
+

Read domains from a Certificate Signing Request

+
+
readCertificateInfoPromise.<object>
+

Read information from a certificate

+
+
createCsrPromise.<Array.<buffer>>
+

Create a Certificate Signing Request

+
+
+ ## Functions
createPrivateKey([size])Promise.<buffer>

Generate a private RSA key

-
createPublicKey(key)Promise.<buffer>
-

Create public key from a private RSA key

-
-
getPemBody(str)string
-

Parse body of PEM encoded object from buffer or string -If multiple objects are chained, the first body will be returned

-
-
splitPemChain(str)Array.<string>
-

Split chain of PEM encoded objects from buffer or string into array

-
-
getModulus(input)Promise.<buffer>
-

Get modulus

-
-
getPublicExponent(input)Promise.<buffer>
-

Get public exponent

-
-
readCsrDomains(csr)Promise.<object>
-

Read domains from a Certificate Signing Request

-
-
readCertificateInfo(cert)Promise.<object>
-

Read information from a certificate

-
-
createCsr(data, [key])Promise.<Array.<buffer>>
-

Create a Certificate Signing Request

-
@@ -50,34 +55,12 @@ DEPRECATION WARNING: This crypto interface is deprecated and will be removed fro major release. Please migrate to the new `acme.crypto` interface at your earliest convenience. **Kind**: global namespace - - -## createPrivateKey([size]) ⇒ Promise.<buffer> -Generate a private RSA key - -**Kind**: global function -**Returns**: Promise.<buffer> - PEM encoded private RSA key - -| Param | Type | Default | Description | -| --- | --- | --- | --- | -| [size] | number | 2048 | Size of the key, default: `2048` | - -**Example** -Generate private RSA key -```js -const privateKey = await acme.forge.createPrivateKey(); -``` -**Example** -Private RSA key with defined size -```js -const privateKey = await acme.forge.createPrivateKey(4096); -``` -## createPublicKey(key) ⇒ Promise.<buffer> +## createPublicKey ⇒ Promise.<buffer> Create public key from a private RSA key -**Kind**: global function +**Kind**: global constant **Returns**: Promise.<buffer> - PEM encoded public RSA key | Param | Type | Description | @@ -91,11 +74,11 @@ const publicKey = await acme.forge.createPublicKey(privateKey); ``` -## getPemBody(str) ⇒ string +## getPemBody ⇒ string Parse body of PEM encoded object from buffer or string If multiple objects are chained, the first body will be returned -**Kind**: global function +**Kind**: global constant **Returns**: string - PEM body | Param | Type | Description | @@ -104,10 +87,10 @@ If multiple objects are chained, the first body will be returned -## splitPemChain(str) ⇒ Array.<string> +## splitPemChain ⇒ Array.<string> Split chain of PEM encoded objects from buffer or string into array -**Kind**: global function +**Kind**: global constant **Returns**: Array.<string> - Array of PEM bodies | Param | Type | Description | @@ -116,10 +99,10 @@ Split chain of PEM encoded objects from buffer or string into array -## getModulus(input) ⇒ Promise.<buffer> +## getModulus ⇒ Promise.<buffer> Get modulus -**Kind**: global function +**Kind**: global constant **Returns**: Promise.<buffer> - Modulus | Param | Type | Description | @@ -135,10 +118,10 @@ const m3 = await acme.forge.getModulus(certificateRequest); ``` -## getPublicExponent(input) ⇒ Promise.<buffer> +## getPublicExponent ⇒ Promise.<buffer> Get public exponent -**Kind**: global function +**Kind**: global constant **Returns**: Promise.<buffer> - Exponent | Param | Type | Description | @@ -154,10 +137,10 @@ const e3 = await acme.forge.getPublicExponent(certificateRequest); ``` -## readCsrDomains(csr) ⇒ Promise.<object> +## readCsrDomains ⇒ Promise.<object> Read domains from a Certificate Signing Request -**Kind**: global function +**Kind**: global constant **Returns**: Promise.<object> - {commonName, altNames} | Param | Type | Description | @@ -174,10 +157,10 @@ console.log(`Alt names: ${altNames.join(', ')}`); ``` -## readCertificateInfo(cert) ⇒ Promise.<object> +## readCertificateInfo ⇒ Promise.<object> Read information from a certificate -**Kind**: global function +**Kind**: global constant **Returns**: Promise.<object> - Certificate info | Param | Type | Description | @@ -198,10 +181,10 @@ console.log(`Alt names: ${altNames.join(', ')}`); ``` -## createCsr(data, [key]) ⇒ Promise.<Array.<buffer>> +## createCsr ⇒ Promise.<Array.<buffer>> Create a Certificate Signing Request -**Kind**: global function +**Kind**: global constant **Returns**: Promise.<Array.<buffer>> - [privateKey, certificateSigningRequest] | Param | Type | Description | @@ -256,3 +239,25 @@ const certificateKey = await acme.forge.createPrivateKey(); const [, certificateRequest] = await acme.forge.createCsr({ altNames: ['test.example.com'], }, certificateKey); + + +## createPrivateKey([size]) ⇒ Promise.<buffer> +Generate a private RSA key + +**Kind**: global function +**Returns**: Promise.<buffer> - PEM encoded private RSA key + +| Param | Type | Description | +| --- | --- | --- | +| [size] | number | Size of the key, default: `2048` | + +**Example** +Generate private RSA key +```js +const privateKey = await acme.forge.createPrivateKey(); +``` +**Example** +Private RSA key with defined size +```js +const privateKey = await acme.forge.createPrivateKey(4096); +``` diff --git a/packages/core/acme-client/package.json b/packages/core/acme-client/package.json index 3728b42a..5ba0b4cf 100644 --- a/packages/core/acme-client/package.json +++ b/packages/core/acme-client/package.json @@ -65,5 +65,5 @@ "bugs": { "url": "https://github.com/publishlab/node-acme-client/issues" }, - "gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" + "gitHead": "1eb70d4cfd1ed2f746369658db2559fe01718324" } diff --git a/packages/core/basic/package.json b/packages/core/basic/package.json index fad1a113..3b61755c 100644 --- a/packages/core/basic/package.json +++ b/packages/core/basic/package.json @@ -43,5 +43,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" + "gitHead": "1eb70d4cfd1ed2f746369658db2559fe01718324" } diff --git a/packages/core/pipeline/package.json b/packages/core/pipeline/package.json index ae338d5e..28e8dd34 100644 --- a/packages/core/pipeline/package.json +++ b/packages/core/pipeline/package.json @@ -43,5 +43,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" + "gitHead": "1eb70d4cfd1ed2f746369658db2559fe01718324" } diff --git a/packages/libs/lib-huawei/package.json b/packages/libs/lib-huawei/package.json index febbcef8..93aa9932 100644 --- a/packages/libs/lib-huawei/package.json +++ b/packages/libs/lib-huawei/package.json @@ -21,5 +21,5 @@ "prettier": "^2.8.8", "tslib": "^2.8.1" }, - "gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" + "gitHead": "1eb70d4cfd1ed2f746369658db2559fe01718324" } diff --git a/packages/libs/lib-iframe/package.json b/packages/libs/lib-iframe/package.json index 4fe4d4df..c541b957 100644 --- a/packages/libs/lib-iframe/package.json +++ b/packages/libs/lib-iframe/package.json @@ -30,5 +30,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" + "gitHead": "1eb70d4cfd1ed2f746369658db2559fe01718324" } diff --git a/packages/libs/lib-k8s/package.json b/packages/libs/lib-k8s/package.json index 27323644..11f78028 100644 --- a/packages/libs/lib-k8s/package.json +++ b/packages/libs/lib-k8s/package.json @@ -31,5 +31,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" + "gitHead": "1eb70d4cfd1ed2f746369658db2559fe01718324" } diff --git a/packages/libs/lib-server/package.json b/packages/libs/lib-server/package.json index 920d268b..73ae901d 100644 --- a/packages/libs/lib-server/package.json +++ b/packages/libs/lib-server/package.json @@ -61,5 +61,5 @@ "typeorm": "^0.3.11", "typescript": "^5.4.2" }, - "gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" + "gitHead": "1eb70d4cfd1ed2f746369658db2559fe01718324" } diff --git a/packages/libs/midway-flyway-js/package.json b/packages/libs/midway-flyway-js/package.json index 4debc735..e596697a 100644 --- a/packages/libs/midway-flyway-js/package.json +++ b/packages/libs/midway-flyway-js/package.json @@ -46,5 +46,5 @@ "typeorm": "^0.3.11", "typescript": "^5.4.2" }, - "gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" + "gitHead": "1eb70d4cfd1ed2f746369658db2559fe01718324" } diff --git a/packages/plugins/plugin-cert/package.json b/packages/plugins/plugin-cert/package.json index e0181b5b..a29fda34 100644 --- a/packages/plugins/plugin-cert/package.json +++ b/packages/plugins/plugin-cert/package.json @@ -40,5 +40,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" + "gitHead": "1eb70d4cfd1ed2f746369658db2559fe01718324" }