6 var forge requirenodeforge var fs requirefs var



































- Slides: 35






서버의 자체서명인증서 생성 6 var forge = require('node-forge'); var fs = require('fs'); var pki = forge. pki; ca. Cert. js // 1. CA 인증서 생성 // generate a keypair and create an X. 509 v 3 certificate var ca. Keys = pki. rsa. generate. Key. Pair(2048); var ca. Cert = pki. create. Certificate(); // CA 개인키 파일 저장 console. log(pki. private. Key. To. Pem(ca. Keys. private. Key)); fs. write. File. Sync("ca. Private. Key. pem", pki. private. Key. To. Pem(ca. Keys. private. Key)); console. log('CA개인키 저장 - ca. Private. Key. pem n'); ca. Cert. public. Key = ca. Keys. public. Key; ca. Cert. serial. Number = '01'; ca. Cert. validity. not. Before = new Date(); ca. Cert. validity. not. After. set. Full. Year(ca. Cert. validity. not. Before. get. Full. Year() + 1); var ca. Attrs = [{ //name: 'common. Name', // CN short. Name: 'CN', value: 'Byoungcheon Lee' }, { //name: 'country. Name', // C short. Name: 'C', value: 'KR' }, { //name: 'state. Or. Province. Name', // ST short. Name: 'ST', value: 'Gyeonggi-do' }, { //name: 'locality. Name', // L short. Name: 'L', value: 'Goyang-si' }, { //name: 'organization. Name', // O short. Name: 'O', value: 'Joongbu Univ. ' }, { //name: 'organizational. Unit. Name', short. Name: 'OU', value: 'Dept. of Information Security' }]; ca. Cert. set. Subject(ca. Attrs); ca. Cert. set. Issuer(ca. Attrs); ca. Cert. set. Extensions([{ name: 'basic. Constraints', c. A: true }, { name: 'key. Usage', key. Cert. Sign: true, digital. Signature: true, non. Repudiation: true, key. Encipherment: true, data. Encipherment: true }, { name: 'ext. Key. Usage', server. Auth: true, client. Auth: true, code. Signing: true, email. Protection: true, time. Stamping: true }, { name: 'ns. Cert. Type', client: true, server: true, email: true, objsign: true, ssl. CA: true, email. CA: true, obj. CA: true }, { name: 'subject. Alt. Name', alt. Names: [{ type: 6, // URI value: 'http: //example. org/' }, { type: 7, // IP ip: '127. 0. 0. 1' }] }, { name: 'subject. Key. Identifier' }]); // self-sign certificate ca. Cert. sign(ca. Keys. private. Key); console. log('CA 자체서명인증서 생성'); console. log(pki. certificate. To. Pem(ca. Cert)); var verified = ca. Cert. verify(ca. Cert); console. log('CA인증서 생성 후 검증: '+verified); console. log(); // CA 인증서 저장 fs. write. File. Sync("ca. Cert. pem", pki. certificate. To. Pem(ca. Cert)); console. log('CA인증서 저장 - ca. Cert. pem'); 1. 프로젝트 루트폴더에 ca. Cert. js 생성 2. ca. Cert. js 실행 > node ca. Cert. js 3. 개인키와 인증서가 다음 파일로 저장됨 - 개인키: ca. Private. Key. pem - 인증서: ca. Cert. pem 위 두개의 파일이 프로젝트 루트폴더에 저장됨을 확인

서버측 App. js 수정 7 const https = require('https'); const fs = require('fs'); 중략 /* http. create. Server(app). listen(port, function(){ console. log('Http server started on port '+port); }); */ https. create. Server({ key: fs. read. File. Sync('ca. Private. Key. pem'), cert: fs. read. File. Sync('ca. Cert. pem') }, app). listen(port, function(){ console. log('Https server started on port '+port); }); Http 서버 삭제 Https 서버 생성 - 개인키 파일 읽기 - 인증서 파일 읽기

클라이언트측 auth. service. ts 수정 8 보안웹서버 접속을 위해 Http를 https로 수정 prep. Endpoint(ep){ //return 'https: //isweb. joongbu. ac. kr: 3000/'+ep; // Server return 'https: //localhost: 3000/'+ep; // local } 서비스 빌드 � > ng build


ng serve 상태에서의 접속 10 http: //localhost: 4200 으로 접속


Cert 컴포넌트 생성 12 인증서 발급 페이지를 위한 cert 컴포넌트 생성 Components 폴더로 이동 > cd angular-src/app/components > ng g component cert App. module. ts에 등록 확인 import { Cert. Component } from '. /components/cert. component'; 중략 const app. Routes: Routes = [ {path: 'cert', component: Cert. Component, can. Activate: [Auth. Guard]} 중략 @Ng. Module({ declarations: [ Cert. Component








서버측 routes/users. js 수정 20 cert. set. Extensions([{ name: 'basic. Constraints', c. A: true }, { name: 'key. Usage', key. Cert. Sign: true, digital. Signature: true, non. Repudiation: true, key. Encipherment: true, data. Encipherment: true }, { name: 'ext. Key. Usage', server. Auth: true, client. Auth: true, code. Signing: true, email. Protection: true, time. Stamping: true }, { name: 'ns. Cert. Type', client: true, server: true, email: true, objsign: true, ssl. CA: true, email. CA: true, obj. CA: true }, { name: 'subject. Alt. Name', alt. Names: [{ type: 6, // URI value: 'http: //example. org/' }, { type: 7, // IP 확장정보 ip: '127. 0. 0. 1' }] }, { name: 'subject. Key. Identifier' }]); 서버 개인키로 서명하여 인증서 생성 사용자 인증서, 서버인증서를 JSON 형식으로 리턴 설정

클라이언트에서 인증서 저장 21 cert. component. ts routes/users. js 인증서를 저장하고 dashboard로 리다이렉트 auth. service. ts





로그인 폼 작성 26 Login. component. html on. Login. Submit() 함수 실행 username, password 변수 이용 왼쪽 ID/Pass 로그인 오른쪽 전자서명 간편 로그인 on. Sig. Login. Submit() 함수 실행 username 1 변수 이용

로그인 논리 수정 27 Login. component. ts username 1 변수 추가 authenticate. Sig. User 함수 추가








Nihad004
Let's go to barry island
Dhaval steel forge
Washington and lafayette inspect the troops at valley forge
Bts forge
Pine forge press
My mothers perfume
Ibm rational build forge training
In september poem
Doll's house quotes
Forge
Ibm rational build forge training
Forgeage libre
Forge welding diagram
Forge.pki.publickeyfrompem
The forge poem theme
Who was the absolute monarch of russia?
Forge dga
Walnut tree forge
Dhaval steel forge
Hypernatremia symptoms
Forge business solutions
Importance of valley forge
Node-forge
Steel forge unit of moti plastic
Mektubunuz var
Eliftir doksan bin kelamın başı nazım türü
Program summa
Var(x+y) formula
Var a vyparovanie
Horozlarda üreme sistemi
Program primer
E.g.
Kur nestrādājošais var reģistrēties kā bezdarbnieks?
Var lect
Var hour