μλ
νμΈμ, λꡬλ μ§
μ λͺ©μμ μΈκΈνλ―μ΄ λ
Έλ 10μμ μμ
ν μ½λλ λ
Έλ 12μμ μλνμ§ μκ³ λ€μμ λ³΄κ³ ν©λλ€.
μ°κ²° λκΉ - 3540: 루ν΄:ssl_choose_client_version :μ§μλμ§ μλ νλ‘ν μ½:c :\ws\deps\openssl\openssl\ssl\statem\statem_lib.c:1922:
{"message":" localhost:1433 μ μ°κ²°νμ§ λͺ»νμ΅λλ€. μ€νΈλ¦Όμ΄ μμ λ ν μ°κΈ°λ₯Ό νΈμΆν μ μμ΅λλ€.","code":"ESOCKET"}
μ΄λ€ λμμ΄? OSλ Windows 10 64λΉνΈ, SQL Serverλ 2012 64λΉνΈμ λλ€.
λ¬Έμ ν΄κ²°λ¨!
λ
Έλ 12+μμ ꡬμ±μ΄ λ€μκ³Ό κ°μ΄ λ³κ²½λμμ΅λλ€.
const ꡬμ±: μ°κ²° κ΅¬μ± = {
μλ²: '...',
μΈμ¦: { μ ν: 'κΈ°λ³Έ', μ΅μ
: { μ¬μ©μ μ΄λ¦: '...', λΉλ°λ²νΈ: '...' } },
μ΅μ
: { ..., μνΈν:κ±°μ§ }
}
μλ νμΈμ @c5soft! π
μ¬κΈ°μμ μνΈνλ₯Ό λΉνμ±ννλ©΄ λ¬Έμ κ° "ν΄κ²°λ¨"μ μ΄ν΄ν©λλ€. μ΄κ²μ μ¬μ© μ¬λ‘μ μ ν©ν μ μμ§λ§ μνΈνλ₯Ό λΉνμ±ννλ κ²μ μ€μ λ‘ μ루μ μ΄ μλλλ€. π
λΉμ·ν μ€λ₯κ° λ°μνλ κ²½μ° Node.js 12λΆν° κΈ°λ³Έ TLS μ€μ μ΄ κ°νλμκΈ° λλ¬Έμ
λλ€. SQL Serverκ° TLS 1.2λ₯Ό μ§μνμ§ μμ κ°λ₯μ±μ΄ λμ§λ§ Node.js 12μμλ κΈ°λ³Έμ μΌλ‘ νμν©λλ€. λ
Έλλ₯Ό μμν λ λͺ
λ Ήμ€ νλκ·Έ(μ: --tls-min-v1.0
)λ₯Ό μ¬μ©νκ±°λ μ¬μ©μ μ§μ cryptoCredentialsDetails
minVersion: 'TLSv1'
λλ μ¬μ©ν΄μΌ νλ TLS λ²μ μ μ§μ νλ Connection
μμ±μμ λν cryptoCredentialsDetails
μ΅μ
.
λκ΅°κ° μ΄ λ¬Έμ μ μ§λ©΄νλ κ²½μ°λ₯Ό λλΉνμ¬ LDAPJSλ₯Ό κΈ°λ°μΌλ‘ νλ λ Έλμ activeDirectory2μμλ λμΌν μΌμ΄ λ°μνμ΅λλ€. ν΄λΉ μ΅μ μ tlsOptionsμ μΆκ°νλ©΄ λ¬Έμ κ° ν΄κ²°λμμ΅λλ€.
λ¬Έμ ν΄κ²°λ¨!
λ Έλ 12+μμ ꡬμ±μ΄ λ€μκ³Ό κ°μ΄ λ³κ²½λμμ΅λλ€.
const ꡬμ±: μ°κ²° κ΅¬μ± = {
μλ²: '...',
μΈμ¦: { μ ν: 'κΈ°λ³Έ', μ΅μ : { μ¬μ©μ μ΄λ¦: '...', λΉλ°λ²νΈ: '...' } },
μ΅μ : { ..., μνΈν:κ±°μ§ }
}
κ°μ¬ ν΄μ !!!
μλ νμΈμ @c5soft! π
μ¬κΈ°μμ μνΈνλ₯Ό λΉνμ±ννλ©΄ λ¬Έμ κ° "ν΄κ²°λ¨"μ μ΄ν΄ν©λλ€. μ΄κ²μ μ¬μ© μ¬λ‘μ μ ν©ν μ μμ§λ§ μνΈνλ₯Ό λΉνμ±ννλ κ²μ μ€μ λ‘ μ루μ μ΄ μλλλ€. π
λΉμ·ν μ€λ₯κ° λ°μνλ κ²½μ° Node.js 12λΆν° κΈ°λ³Έ TLS μ€μ μ΄ κ°νλμκΈ° λλ¬Έμ λλ€. SQL Serverκ° TLS 1.2λ₯Ό μ§μνμ§ μμ κ°λ₯μ±μ΄ λμ§λ§ Node.js 12μμλ κΈ°λ³Έμ μΌλ‘ νμν©λλ€. λ Έλλ₯Ό μμν λ λͺ λ Ήμ€ νλκ·Έ(μ:
--tls-min-v1.0
)λ₯Ό μ¬μ©νκ±°λ μ¬μ©μ μ§μ cryptoCredentialsDetails
minVersion: 'TLSv1'
λλ μ¬μ©ν΄μΌ νλ TLS λ²μ μ μ§μ νλConnection
μμ±μμ λνcryptoCredentialsDetails
μ΅μ .
λ§€μ° κ°μ¬ν©λλ€!
λ΄ nestjs νλ‘μ νΈμμ μλν©λλ€!
nestjsμμ κ°μ λ¬Έμ κ° μλ μ¬λλ€μ μν΄.
TypeOrmModule.forRoot({
type: 'mssql',
host: 'localhost',
port: 1433,
username: 'root',
password: 'root',
database: 'test',
entities: [],
synchronize: true,
options: {
cryptoCredentialsDetails: {
minVersion: 'TLSv1'
}
}
}),
κ°μ₯ μ μ©ν λκΈ
λ¬Έμ ν΄κ²°λ¨!
λ Έλ 12+μμ ꡬμ±μ΄ λ€μκ³Ό κ°μ΄ λ³κ²½λμμ΅λλ€.
const ꡬμ±: μ°κ²° κ΅¬μ± = {
μλ²: '...',
μΈμ¦: { μ ν: 'κΈ°λ³Έ', μ΅μ : { μ¬μ©μ μ΄λ¦: '...', λΉλ°λ²νΈ: '...' } },
μ΅μ : { ..., μνΈν:κ±°μ§ }
}