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