mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
misc: attached gateway name to client certificates
This commit is contained in:
@@ -395,7 +395,8 @@ export const gatewayV2ServiceFactory = ({
|
|||||||
relayId: gateway.relayId,
|
relayId: gateway.relayId,
|
||||||
orgId: gateway.orgId,
|
orgId: gateway.orgId,
|
||||||
orgName: gateway.orgName,
|
orgName: gateway.orgName,
|
||||||
gatewayId
|
gatewayId,
|
||||||
|
gatewayName: gateway.name
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -508,7 +509,8 @@ export const gatewayV2ServiceFactory = ({
|
|||||||
const relayCredentials = await relayService.getCredentialsForGateway({
|
const relayCredentials = await relayService.getCredentialsForGateway({
|
||||||
relayName,
|
relayName,
|
||||||
orgId,
|
orgId,
|
||||||
gatewayId: gateway.id
|
gatewayId: gateway.id,
|
||||||
|
gatewayName: gateway.name
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
1
backend/src/ee/services/relay/relay-constants.ts
Normal file
1
backend/src/ee/services/relay/relay-constants.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export const RELAY_CONNECTING_GATEWAY_INFO = "1.3.6.1.4.1.12345.100.3";
|
||||||
@@ -24,6 +24,7 @@ import { SshCertType } from "../ssh/ssh-certificate-authority-types";
|
|||||||
import { SshCertKeyAlgorithm } from "../ssh-certificate/ssh-certificate-types";
|
import { SshCertKeyAlgorithm } from "../ssh-certificate/ssh-certificate-types";
|
||||||
import { TInstanceRelayConfigDALFactory } from "./instance-relay-config-dal";
|
import { TInstanceRelayConfigDALFactory } from "./instance-relay-config-dal";
|
||||||
import { TOrgRelayConfigDALFactory } from "./org-relay-config-dal";
|
import { TOrgRelayConfigDALFactory } from "./org-relay-config-dal";
|
||||||
|
import { RELAY_CONNECTING_GATEWAY_INFO } from "./relay-constants";
|
||||||
import { TRelayDALFactory } from "./relay-dal";
|
import { TRelayDALFactory } from "./relay-dal";
|
||||||
|
|
||||||
export type TRelayServiceFactory = ReturnType<typeof relayServiceFactory>;
|
export type TRelayServiceFactory = ReturnType<typeof relayServiceFactory>;
|
||||||
@@ -698,6 +699,7 @@ export const relayServiceFactory = ({
|
|||||||
|
|
||||||
const $generateRelayClientCredentials = async ({
|
const $generateRelayClientCredentials = async ({
|
||||||
gatewayId,
|
gatewayId,
|
||||||
|
gatewayName,
|
||||||
orgId,
|
orgId,
|
||||||
orgName,
|
orgName,
|
||||||
relayPkiClientCaCertificate,
|
relayPkiClientCaCertificate,
|
||||||
@@ -706,6 +708,7 @@ export const relayServiceFactory = ({
|
|||||||
relayPkiServerCaCertificateChain
|
relayPkiServerCaCertificateChain
|
||||||
}: {
|
}: {
|
||||||
gatewayId: string;
|
gatewayId: string;
|
||||||
|
gatewayName: string;
|
||||||
orgId: string;
|
orgId: string;
|
||||||
orgName: string;
|
orgName: string;
|
||||||
relayPkiClientCaCertificate: Buffer;
|
relayPkiClientCaCertificate: Buffer;
|
||||||
@@ -736,6 +739,16 @@ export const relayServiceFactory = ({
|
|||||||
const clientCertPrivateKey = crypto.nativeCrypto.KeyObject.from(clientKeys.privateKey);
|
const clientCertPrivateKey = crypto.nativeCrypto.KeyObject.from(clientKeys.privateKey);
|
||||||
const clientCertSerialNumber = createSerialNumber();
|
const clientCertSerialNumber = createSerialNumber();
|
||||||
|
|
||||||
|
const connectingGatewayInfoExtension = new x509.Extension(
|
||||||
|
RELAY_CONNECTING_GATEWAY_INFO,
|
||||||
|
false,
|
||||||
|
Buffer.from(
|
||||||
|
JSON.stringify({
|
||||||
|
name: gatewayName
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
// Build standard extensions
|
// Build standard extensions
|
||||||
const extensions: x509.Extension[] = [
|
const extensions: x509.Extension[] = [
|
||||||
new x509.BasicConstraintsExtension(false),
|
new x509.BasicConstraintsExtension(false),
|
||||||
@@ -749,7 +762,8 @@ export const relayServiceFactory = ({
|
|||||||
x509.KeyUsageFlags[CertKeyUsage.KEY_AGREEMENT],
|
x509.KeyUsageFlags[CertKeyUsage.KEY_AGREEMENT],
|
||||||
true
|
true
|
||||||
),
|
),
|
||||||
new x509.ExtendedKeyUsageExtension([x509.ExtendedKeyUsage[CertExtendedKeyUsage.CLIENT_AUTH]], true)
|
new x509.ExtendedKeyUsageExtension([x509.ExtendedKeyUsage[CertExtendedKeyUsage.CLIENT_AUTH]], true),
|
||||||
|
connectingGatewayInfoExtension
|
||||||
];
|
];
|
||||||
|
|
||||||
const clientCert = await x509.X509CertificateGenerator.create({
|
const clientCert = await x509.X509CertificateGenerator.create({
|
||||||
@@ -777,11 +791,13 @@ export const relayServiceFactory = ({
|
|||||||
const getCredentialsForGateway = async ({
|
const getCredentialsForGateway = async ({
|
||||||
relayName,
|
relayName,
|
||||||
orgId,
|
orgId,
|
||||||
gatewayId
|
gatewayId,
|
||||||
|
gatewayName
|
||||||
}: {
|
}: {
|
||||||
relayName: string;
|
relayName: string;
|
||||||
orgId: string;
|
orgId: string;
|
||||||
gatewayId: string;
|
gatewayId: string;
|
||||||
|
gatewayName: string;
|
||||||
}) => {
|
}) => {
|
||||||
let relay: TRelays | null = await relayDAL.findOne({
|
let relay: TRelays | null = await relayDAL.findOne({
|
||||||
orgId,
|
orgId,
|
||||||
@@ -829,7 +845,7 @@ export const relayServiceFactory = ({
|
|||||||
caPrivateKey: orgCAs.relaySshClientCaPrivateKey.toString("utf8"),
|
caPrivateKey: orgCAs.relaySshClientCaPrivateKey.toString("utf8"),
|
||||||
clientPublicKey: relayClientSshPublicKey,
|
clientPublicKey: relayClientSshPublicKey,
|
||||||
keyId: `client-${relayName}`,
|
keyId: `client-${relayName}`,
|
||||||
principals: [gatewayId],
|
principals: [gatewayId, gatewayName],
|
||||||
certType: SshCertType.USER,
|
certType: SshCertType.USER,
|
||||||
requestedTtl: "1d"
|
requestedTtl: "1d"
|
||||||
});
|
});
|
||||||
@@ -846,12 +862,14 @@ export const relayServiceFactory = ({
|
|||||||
relayId,
|
relayId,
|
||||||
orgId,
|
orgId,
|
||||||
orgName,
|
orgName,
|
||||||
gatewayId
|
gatewayId,
|
||||||
|
gatewayName
|
||||||
}: {
|
}: {
|
||||||
relayId: string;
|
relayId: string;
|
||||||
orgId: string;
|
orgId: string;
|
||||||
orgName: string;
|
orgName: string;
|
||||||
gatewayId: string;
|
gatewayId: string;
|
||||||
|
gatewayName: string;
|
||||||
}) => {
|
}) => {
|
||||||
const relay = await relayDAL.findOne({
|
const relay = await relayDAL.findOne({
|
||||||
id: relayId
|
id: relayId
|
||||||
@@ -869,6 +887,7 @@ export const relayServiceFactory = ({
|
|||||||
const instanceCAs = await $getInstanceCAs();
|
const instanceCAs = await $getInstanceCAs();
|
||||||
const relayCertificateCredentials = await $generateRelayClientCredentials({
|
const relayCertificateCredentials = await $generateRelayClientCredentials({
|
||||||
gatewayId,
|
gatewayId,
|
||||||
|
gatewayName,
|
||||||
orgId,
|
orgId,
|
||||||
orgName,
|
orgName,
|
||||||
relayPkiClientCaCertificate: instanceCAs.instanceRelayPkiClientCaCertificate,
|
relayPkiClientCaCertificate: instanceCAs.instanceRelayPkiClientCaCertificate,
|
||||||
@@ -886,6 +905,7 @@ export const relayServiceFactory = ({
|
|||||||
const orgCAs = await $getOrgCAs(orgId);
|
const orgCAs = await $getOrgCAs(orgId);
|
||||||
const relayCertificateCredentials = await $generateRelayClientCredentials({
|
const relayCertificateCredentials = await $generateRelayClientCredentials({
|
||||||
gatewayId,
|
gatewayId,
|
||||||
|
gatewayName,
|
||||||
orgId,
|
orgId,
|
||||||
orgName,
|
orgName,
|
||||||
relayPkiClientCaCertificate: orgCAs.relayPkiClientCaCertificate,
|
relayPkiClientCaCertificate: orgCAs.relayPkiClientCaCertificate,
|
||||||
|
|||||||
Reference in New Issue
Block a user