tạo chứng chỉ SSL tự ký đáng tin cậy cho localhost (để sử dụng với Express / Node)


129

Cố gắng làm theo các hướng dẫn khác nhau để tạo chứng chỉ tự ký để sử dụng với localhost, Hầu hết các hướng dẫn dường như dành cho IIS, nhưng tôi đang cố gắng sử dụng Nodejs / Express. Không ai trong số họ hoạt động đúng bởi vì trong khi chứng chỉ được cài đặt, nó không đáng tin cậy. Đây là những gì tôi đã thử thất bại:

Ai đó có thể cung cấp một quy trình công việc có thể làm điều này? Tôi có thể cài đặt chứng chỉ, nhưng tôi không thể nhận được chứng chỉ đáng tin cậy trong chrome (v32) hoặc IE (v10).

EDIT: nó đã được đề xuất trong các ý kiến ​​rằng vấn đề không phải là chứng chỉ gốc đáng tin cậy. Tôi đã cài đặt chứng chỉ qua IE nhưng nó vẫn không được tin cậy.


Không có chứng chỉ tự ký nào có thể được tin cậy cho các trình duyệt web. Họ không được ký bởi các cơ quan ký kết đáng tin cậy.

1
Điều đó không đúng: bạn có thể cài đặt chứng chỉ gốc để chứng chỉ tự ký của bạn được tin cậy. tuy nhiên tôi dường như không thể làm điều này đúng. Tôi đọc được rằng bạn có thể cài đặt chuỗi cert trong IE (không phải bằng chrome), vì vậy tôi đã thử nhưng nó vẫn không được công nhận. Tôi không biết liệu đó là vì localhost là đặc biệt hay nếu chứng chỉ tự ký không đúng.
JasonS

3
Tôi chưa bao giờ có chứng chỉ tự ký làm việc với các trình duyệt như Chrome. Đây là cách giải quyết của tôi: Tôi đã tạo một mục DNS cho local.MYDOMAIN.com trỏ đến 127.0.0.1 (localhost) và sau đó chỉ cần sử dụng chứng chỉ sản xuất của tôi. Điều này có thêm lợi ích của việc đảm bảo không có vấn đề gì với chuỗi chứng nhận sản xuất của bạn, v.v.
JasonS

Câu trả lời:


85

Các câu trả lời ở trên là một phần. Tôi đã dành rất nhiều thời gian để làm việc này, nó thật điên rồ. Lưu ý đến bản thân tương lai của tôi, đây là những gì bạn cần làm:

Tôi đang làm việc trên Windows 10, với Chrome 65. Firefox đang hoạt động tốt - chỉ cần xác nhận localhost là một ngoại lệ bảo mật và nó sẽ hoạt động. Chrome không:

Bước 1. trong phần phụ trợ của bạn, tạo một thư mục có tên security. chúng tôi sẽ làm việc bên trong nó.

Bước 2. tạo tệp cấu hình yêu cầu có tên req.cnfvới nội dung sau (tín dụng chuyển đến: @Anshul )

req.cnf:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = Country initials like US, RO, GE
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost

Một lời giải thích về các lĩnh vực này là ở đây .

Bước 3. điều hướng đến thư mục bảo mật trong thiết bị đầu cuối và gõ lệnh sau:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256

Bước 4. sau đó bên ngoài securitythư mục, trong ứng dụng thể hiện của bạn làm một cái gì đó như thế này: (tín dụng vào @Diego Mello)

backend 
 /security
 /server.js

server.js:

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
    res.send("IT'S WORKING!")
})

const httpsOptions = {
    key: fs.readFileSync('./security/cert.key'),
    cert: fs.readFileSync('./security/cert.pem')
}
const server = https.createServer(httpsOptions, app)
    .listen(port, () => {
        console.log('server running at ' + port)
    })

Bước 5. khởi động máy chủ,node server.js và truy cập https: // localhost: 3000 .

Tại thời điểm này, chúng tôi có thiết lập máy chủ. Nhưng trình duyệt sẽ hiển thị một thông báo cảnh báo.

Chúng tôi cần đăng ký chứng chỉ tự ký, với tư cách là Cơ quan cấp chứng chỉ tin cậy CA, trong kho lưu trữ chứng chỉ chrome / windows.(chrome cũng lưu cái này trong windows,)

Bước 6. mở Dev Tools bằng chrome, chuyển đến Bảng bảo mật, sau đó bấm vào Xem Chứng chỉ. nhập mô tả hình ảnh ở đây

Bước 7. vào bảng Chi tiết, bấm Sao chép tệp, sau đó khi Trình hướng dẫn xuất chứng chỉ xuất hiện, bấm Tiếp theo như bên dưới:

đi đến chi tiết - sao chép tệp - tiếp theo trên trình hướng dẫn xuất khẩu

Bước 8. để lại mã hóa DER, nhấp vào tiếp theo, chọn Browse, đặt nó vào một thư mục dễ truy cập như Desktop và đặt tên cho chứng chỉlocalhost.cer, then click Save and then Finish. . Bạn sẽ có thể thấy chứng chỉ của bạn trên Desktop.

Bước 9. Mở chrome://settings/bằng cách chèn nó vào hộp url. Xuống bên dưới, nhấp vào Advanced / Advanced Options, sau đó cuộn xuống để tìm Manage Certificates.

chọn quản lý chứng chỉ

Bước 10. Chuyển đến bảng điều khiển ủy quyền chứng chỉ gốc đáng tin cậy và nhấp vào nhập.

Chuyển đến bảng điều khiển ủy quyền chứng chỉ gốc đáng tin cậy và nhấp vào nhập

Chúng tôi sẽ nhập localhost.cerchứng chỉ mà chúng tôi vừa xuất xong ở bước 8.

Bước 11. nhấp vào duyệt, tìm localhost.cer, để lại các giá trị mặc định nhấp vào một loạt lần tiếp theo - cho đến khi cảnh báo này xuất hiện, nhấp vào có.

xác nhận ngoại lệ bảo mật

Bước 12. đóng mọi thứ và khởi động lại chrome. Sau đó, khi đi đến https://localhost:3000bạn sẽ thấy: phải yêu màu xanh


Xin chào, khi tôi hoàn thành tất cả các bước tôi mở https://localhost:3000và Chrome bị kẹt khi tải. Bất cứ ai cũng có thể nói những gì có thể là lý do?
co.zohar

@ co.zohar có tin nhắn nào trong bảng điều khiển không? Nhấn crl+shift+ihoặc F12để mở bàn điều khiển.
AIon

1
Nếu bạn đang thực hiện việc này cho một địa chỉ trên mạng, tôi thấy rằng việc thiết lập DNS chứng chỉ thành tên máy chủ, chẳng hạn như: DNS.1 = server.local Sau đó, trên máy kết nối, hãy cập nhật tệp HOSTS để trỏ địa chỉ IP của máy chủ vào tên máy chủ, ví dụ: 192.168.0.50 server.localĐiều này sẽ cho phép chứng chỉ và địa chỉ trùng khớp và xác nhận chứng chỉ.
roskelld

@AIon giao diện điều khiển không hiển thị bất cứ điều gì. Trang này chỉ hiển thị: "Đang chờ localhost ...". Bạn đã cấu hình bất cứ điều gì trong tập tin máy chủ?
co.zohar

1
Tôi đã tìm thấy một câu trả lời nửa cho câu hỏi của riêng tôi: nếu bạn thay đổi CN và DNS.1 thành một cái gì đó như "local.com" chẳng hạn, và trong mỗi máy tính cần truy cập vào máy chủ, hãy thay đổi tệp etc / hosts thành trỏ cục bộ .com đến ip của máy chủ, điều này hoạt động.
TKoL

110

Con đường ngắn nhất. Đã thử nghiệm trên MacOS, nhưng có thể hoạt động tương tự trên các HĐH khác.

Tạo pem

> openssl req -x509 -newkey rsa:2048 -keyout keytmp.pem -out cert.pem -days 365

> openssl rsa -in keytmp.pem -out key.pem

Máy chủ cấp tốc của bạn

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
  res.send('WORKING!')
})

const httpsOptions = {
  key: fs.readFileSync('./key.pem'),
  cert: fs.readFileSync('./cert.pem')
}
const server = https.createServer(httpsOptions, app).listen(port, () => {
  console.log('server running at ' + port)
})
  • Mở https://localhost:3000trong Google Chrome và bạn sẽ thấy rằng nó không an toàn. Chưa!
  • Trong Công cụ dành cho nhà phát triển> Bảo mật> Xem chứng chỉ: Kéo hình ảnh vào màn hình của bạn và nhấp đúp vào nó.
  • Nhấp vào 'Thêm'
  • Tìm nó trong Keychain Access và nhấp đúp vào nó
  • Mở rộng 'Tin tưởng' và thay đổi 'Khi sử dụng chứng chỉ này' thành 'Luôn tin tưởng'.
  • Bạn có thể được nhắc xác thực.
  • Khởi động lại máy chủ của bạn.
  • Làm mới trình duyệt của bạn.
  • Thưởng thức! :)

1
Đây là một liên kết khác nếu bạn muốn làm điều đó trên Mac: certsimple.com/blog/localhost-ssl-fix .
Giăng

Xinh đẹp! Điều này đã làm việc! Tôi muốn thêm: Cài đặt OpenSSL từ đây: indy.fulgan.com/SSL/?C=M;O=A . Lấy tập tin .cnf từ đây: và sau đó, cấu hình nó từ đây: gist.githubusercontent.com/pandurang90/dbe6a67339747ef5bacf/raw/... và cấu hình OpenSSL từ đây: stackoverflow.com/questions/7360602/...
Jose Một

2
Tôi muốn thêm rằng đối với Chrome 58+, bạn sẽ gặp lỗi "Thiếu tên thay thế chủ đề". stackoverflow.com/a/42917227/1057052 . Kiểm tra các câu trả lời dưới đây để được trợ giúp thêm: stackoverflow.com/a/43666288/1057052 , stackoverflow.com/a/44398368/1057052
Jose A

14
Drag image to your desktop and double click it-> tôi không thể kéo bất cứ thứ gì vào máy tính để bàn của mình, không thể kéo được .. Bạn imageđang nói gì về quặng chính xác?
AIon

7
Để khắc phục "Thiếu tên thay thế chủ đề" trong Chrome, bạn có thể thực hiện openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650thay vì dòng đầu tiên bạn đề xuất. Và điều này cũng sẽ hỏi ít câu hỏi hơn trong quá trình ...
Michael Litvin

78

Bạn có thể thử openSSL để tạo chứng chỉ. Hãy nhìn vào điều này .

Bạn sẽ cần một tệp .key và .crt để thêm HTTPS vào máy chủ JS express nút. Khi bạn tạo mã này, hãy sử dụng mã này để thêm HTTPS vào máy chủ.

var https = require('https');
var fs = require('fs');
var express = require('express');

var options = {
    key: fs.readFileSync('/etc/apache2/ssl/server.key'),
    cert: fs.readFileSync('/etc/apache2/ssl/server.crt'),
    requestCert: false,
    rejectUnauthorized: false
};


var app = express();

var server = https.createServer(options, app).listen(3000, function(){
    console.log("server started at port 3000");
});

Điều này đang hoạt động tốt trong máy cục bộ của tôi cũng như máy chủ nơi tôi đã triển khai nó. Cái tôi có trong máy chủ được mua từ goDaddy nhưng localhost có chứng chỉ tự ký.

Tuy nhiên, mọi trình duyệt đã đưa ra một lỗi cho biết kết nối không đáng tin cậy, bạn có muốn tiếp tục không. Sau khi tôi nhấp vào tiếp tục, nó hoạt động tốt.

Nếu bất cứ ai đã từng bỏ qua lỗi này với chứng chỉ tự ký, xin vui lòng khai sáng.


9
Chứng chỉ của bạn vẫn chưa được tin cậy, vì vậy bạn có cùng một vấn đề mà tôi đang mô tả. Tôi cần nó được tin tưởng để kiểm tra / gỡ lỗi một dịch vụ web đúng cách.
JasonS

1
Vì vậy, bạn muốn chứng chỉ này chỉ được tin cậy trong máy cục bộ của bạn chứ không phải trong mạng?

1
liên kết ở đầu câu trả lời giới thiệu mã hóa 3DES 1024 bit, đã lỗi thời. Tốt hơn để sử dụng openssl genrsa -out key.pem 2048cho một chìa khóa tốt hơn.
steampowered

3
Chứng chỉ của bạn vẫn chưa được tin cậy.
Diego Mello

2
mã tốc hành ở trên hoạt động, sử dụng github.com/FiloSottile/mkcert (thay vì openSSL) để tạo chứng chỉ CA / chứng chỉ tin cậy cục bộ. Thanh xanh tất cả các cách.
som

11

Cách tạo chứng chỉ SSL cho localhost: link

openssl genrsa -des3 -out server.key 1024

bạn cần nhập mật khẩu ở đây mà bạn cần nhập lại theo các bước sau

openssl req -new -key server.key -out server.csr

Khi được hỏi "Tên thường gọi" gõ vào: localhost

openssl x509 -req -days 1024 -in server.csr -signkey server.key -out server.crt

1
Đây là giải pháp mà tôi đã truy quét internet trong hơn 2 giờ qua. Đối với bất kỳ ai trong ubfox di chuyển cp server.crt /usr/local/share/ca-certificates/.và chạy sudo update-ca-certificatesSau đó, các yêu cầu https của localhost hoạt động theo NodeJS 8+. Id cũng tăng1024 to 2048
Salyangoz

6

Đây là những gì làm việc cho tôi

trên cửa sổ

1) Thêm phần này vào tệp% WINDIR% \ System32 \ driver \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net (vì trình duyệt có vấn đề với 'localhost' (đối với tập lệnh gốc chéo)

Windows Vista và Windows 7 Vista và Windows 7 sử dụng Kiểm soát tài khoản người dùng (UAC) để Notepad phải được chạy với tư cách Quản trị viên.

  1. Nhấp vào Bắt đầu -> Tất cả chương trình -> Phụ kiện

  2. Nhấp chuột phải vào Notepad và chọn Chạy với tư cách quản trị viên

  3. Nhấp vào Tiếp tục trên cửa sổ UAC "Windows cần sự cho phép của bạn".

  4. Khi Notepad mở Bấm vào Tệp -> Mở

  5. Trong trường tên tệp, nhập C: \ Windows \ System32 \ Driver \ etc \ hosts

  6. Nhấp vào Mở

  7. Thêm phần này vào tệp% WINDIR% \ System32 \ driver \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net

  8. Tiết kiệm

  9. Đóng và khởi động lại trình duyệt

Trên máy Mac hoặc Linux:

  1. Mở / etc / hosts với sự sucho phép
  2. Thêm vào 127.0.0.1 localdev.YOURSITE.net
  3. Lưu nó

Khi phát triển, bạn sử dụng localdev.YOURSITE.net thay vì localhost, vì vậy nếu bạn đang sử dụng cấu hình run / debug trong ide của mình, hãy chắc chắn cập nhật nó.

Sử dụng ".YOURSITE.net" làm tên miền cookied (có dấu chấm ở đầu) khi tạo cookiem sau đó nó sẽ hoạt động với tất cả tên miền phụ.

2) tạo chứng chỉ bằng localdev.url

MIPO: Nếu bạn gặp sự cố khi tạo chứng chỉ trên windows, hãy sử dụng máy VirtualBox hoặc Vmware để thay thế.

3) nhập chứng chỉ như đã nêu trên http://www.charlesproxy.com/documentation/USE-charles/ssl-certert/


Xin chào, cảm ơn vì đã chia sẻ điều này. Một số người khác sẽ phải bình luận nếu điều này hoạt động hay không. Cách giải quyết của tôi: Cuối cùng tôi đã thêm dev.ph Phantomjscloud.com vào tệp máy chủ của mình và sau đó sử dụng chứng chỉ sản xuất của mình. Điều đó chỉ hữu ích nếu bạn muốn các khóa sản xuất có sẵn trên hộp dev của mình, vì vậy tôi nghĩ rằng giải pháp của bạn vẫn có thể hợp lệ, nếu người khác có thể vui lòng xác minh
JasonS

Nó hoạt động cho tôi và nhóm của tôi, trong sự kết hợp của nhiều cách, bảo mật cục bộ đến máy chủ cục bộ để bảo mật cục bộ cho máy chủ sản xuất.
TroyWorks

Đối với Windows, bảng điều khiển git bash hoạt động tuyệt vời bằng cách sử dụng các lệnh openssl từ đây . Chỉ cần cài đặt chứng chỉ gốc và bạn có thể tạo nhiều chứng chỉ dành riêng cho trang web được ký bởi nó nếu bạn muốn.
Jason Goemaat

6

Mkcert từ @FiloSottile làm cho quá trình này đơn giản hơn nhiều:

  1. Cài đặt mkcert , có hướng dẫn cho macOS / Windows / Linux
  2. mkcert -install để tạo một CA cục bộ
  3. mkcert localhost 127.0.0.1 ::1 để tạo chứng chỉ tin cậy cho localhost trong thư mục hiện tại
  4. Bạn đang sử dụng nút (không sử dụng kho lưu trữ gốc của hệ thống), vì vậy bạn cần chỉ định rõ ràng CA trong một biến môi trường, ví dụ:export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
  5. Cuối cùng chạy máy chủ cấp tốc của bạn bằng cách sử dụng thiết lập được mô tả trong nhiều câu trả lời khác (ví dụ bên dưới)
  6. bùng nổ. bơi của localhost trong màu xanh lá cây.

Thiết lập nút cơ bản:

const https = require('https');
const fs = require('fs');
const express = require('express');

const app = express();    
const server = https.createServer({
    key: fs.readFileSync('/XXX/localhost+2-key.pem'), // where's me key?
    cert: fs.readFileSync('/XXX/localhost+2.pem'), // where's me cert?
    requestCert: false,
    rejectUnauthorized: false,
}, app).listen(10443); // get creative

Hoạt động rất nhiều! Với phương pháp này, chúng tôi không cần phải đăng ký chứng chỉ tự ký, với tư cách là Cơ quan cấp chứng chỉ tin cậy CA, trong cửa hàng chứng chỉ chrome / windows. Như đã đề cập trong các câu trả lời khác.
zaheer

4

Nếu bạn đang dùng OSX / Chrome, bạn có thể thêm chứng chỉ SSL tự ký vào móc khóa hệ thống của mình như được giải thích tại đây: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and -elf-Sign-ssl-cert

Đó là một quy trình thủ công, nhưng cuối cùng tôi đã làm cho nó hoạt động. Chỉ cần đảm bảo Tên chung (CN) được đặt thành "localhost" (không có cổng) và sau khi chứng chỉ được thêm vào, hãy đảm bảo tất cả các tùy chọn Tin cậy trên chứng chỉ được đặt thành "Luôn tin cậy". Ngoài ra, hãy đảm bảo bạn thêm nó vào móc khóa "Hệ thống" chứ không phải móc khóa "đăng nhập".


Anh ta đề cập đến IE, có nghĩa là anh ta đang sử dụng Windows.
2 bit

3

Nếu bạn đang sử dụng nút, tại sao không tạo chúng bằng nút? Mô-đun này có vẻ khá đầy đủ tính năng:

Lưu ý rằng tôi sẽ không tạo ra khi đang bay. Tạo với một số loại tập lệnh xây dựng để bạn có chứng chỉ và khóa nhất quán. Nếu không, bạn sẽ phải ủy quyền cho chứng chỉ tự ký mới được tạo mỗi lần.


3

Một số câu trả lời được đăng có những phần rất hữu ích với tôi để khắc phục vấn đề này. Tuy nhiên, tôi cũng quan tâm đến số bước tối thiểu và lý tưởng nhất là tránh OpenSSL (trên Windows 10).

Vì vậy, một điều quan trọng từ các câu trả lời (tín dụng: @ TroyWorks ) là bạn cần chỉnh sửa tệp HOSTS của mình để tạo một máy chủ hư cấu và ánh xạ tới 127.0.0.1. Điều này giả định rằng bạn sẽ được phát triển địa phương.

Trong trường hợp của tôi, tôi đã sử dụng chứng chỉ SS để bảo mật websocket trong NodeJS và ổ cắm đó đang được kết nối với lập trình (trái ngược với thông qua trình duyệt). Vì vậy, đối với tôi, điều quan trọng là chứng chỉ được chấp nhận mà không có cảnh báo hoặc sai sót, và điều quan trọng là phải có chứng chỉ được tạo bằng một CN phù hợp (và tất nhiên chấp nhận chứng chỉ vào Cơ quan đáng tin cậy, như được mô tả ở nơi khác trong câu trả lời) . Sử dụng IIS để tạo chứng chỉ tự ký sẽ không tạo CN phù hợp, vì vậy tôi đã phát hiện ra lệnh đơn giản sau bằng Powershell:

New-SelfSignedCertificate -DnsName "gandalf.dummy.dev" -FriendlyName "gandalf" -CertStoreLocation "cert:\LocalMachine\My"

Điều này phải được chạy trong bảng điều khiển Quản trị viên PS, nhưng nó chỉ hoạt động và đưa chứng chỉ vào phần "Cá nhân" của kho chứng chỉ LocalMachine. Bạn có thể xác minh nó đã được tạo bằng cách thực hiện:

ls cert:\LocalMachine\My 

Để tin tưởng nó, chỉ cần sao chép này và dán vào "Cơ quan chứng nhận gốc đáng tin cậy" bằng Trình quản lý chứng chỉ (đảm bảo bạn đang xem chứng chỉ Máy cục bộ, không phải người dùng hiện tại!).

Nếu bạn liên kết với chứng chỉ này trong IIS, bạn sẽ có thể nhấn https://gandalf.dummy.dev/ và có được kết nối an toàn mà không có bất kỳ cảnh báo nào.

Phần cuối cùng, sử dụng phần này trong NodeJS, được mô tả ở trên và trong các câu trả lời SO khác, vì vậy tôi sẽ chỉ thêm rằng trên Windows, làm việc với tệp pfx kết hợp giữa chứng chỉ và khóa riêng dễ dàng hơn. Bạn có thể xuất pfx dễ dàng từ Trình quản lý chứng chỉ, nhưng nó ảnh hưởng đến cách bạn sử dụng nó trong NodeJS. Khi khởi tạo Máy chủ bằng mô-đun 'https', các tùy chọn bạn sẽ sử dụng (thay vì 'khóa' và 'cert') sẽ là 'pfx' và 'cụm mật khẩu', như trong:

var https = require('https');
var options = { 
    pfx: fs.readFileSync('mypfxfile'), 
    passphrase: 'foo' 
};
var server = https.createServer(options);

2

trên windows tôi đã tạo chứng chỉ phát triển iis đáng tin cậy bằng cách sử dụng MMC (start> run> mmc), sau đó thêm snapin chứng chỉ, chọn "máy tính cục bộ" và chấp nhận mặc định. Khi snapip chứng chỉ đó được thêm vào, hãy mở rộng cây chứng chỉ máy tính cục bộ để xem bên dưới Personal, chọn chứng chỉ localhost, nhấp chuột phải> tất cả tác vụ> xuất. chấp nhận tất cả các mặc định trong trình hướng dẫn xuất khẩu.

Khi tệp đó được lưu, mở rộng chứng chỉ tin cậy và bắt đầu nhập chứng chỉ bạn vừa xuất. https://localhosthiện được tin cậy trong chrome không có cảnh báo bảo mật.

Tôi đã sử dụng hướng dẫn này độ phân giải # 2 từ blog MSDN, op cũng chia sẻ một liên kết trong câu hỏi của anh ấy về việc cũng nên sử dụng MMC nhưng điều này hiệu quả với tôi. độ phân giải # 2


2

Đi đến: chrome://flags/

Bật: Cho phép chứng chỉ không hợp lệ đối với tài nguyên được tải từ localhost.

Bạn không có bảo mật xanh, nhưng bạn luôn được phép sử dụng https: // localhost bằng chrome.


2

Có nhiều khía cạnh hơn cho điều này.

Bạn có thể đạt được TLS (một số người nói SSL) với chứng chỉ, tự ký hoặc không.

Để có một thanh màu xanh cho chứng chỉ tự ký, bạn cũng cần phải trở thành Tổ chức chứng nhận (CA). Khía cạnh này bị thiếu trong hầu hết các tài nguyên tôi tìm thấy trên hành trình đạt được thanh màu xanh lục trong thiết lập phát triển địa phương. Trở thành một CA dễ dàng như tạo chứng chỉ.

Tài nguyên này bao gồm việc tạo cả chứng chỉ CA và chứng chỉ Máy chủ và kết quả là thiết lập của tôi hiển thị thanh màu xanh lục trên localhost Chrome, Firefox và Edge: https://ram.k0a1a.net/elf-sign_https_cert_after_chrome_58

Xin lưu ý: trong Chrome, bạn cần thêm Chứng chỉ CA cho các cơ quan đáng tin cậy của mình.


0

Nếu bạn cần phải đi một bước xa hơn các bước chi tiết của @ alon và cũng tạo một ca tự ký:

https.createServer({
  key: fs.readFileSync(NODE_SSL_KEY),
  cert: fs.readFileSync(NODE_SSL_CERT),
  ca: fs.readFileSync(NODE_SSL_CA),
}, app).listen(PORT, () => {});

pack.json

"setup:https": "openssl genrsa -out src/server/ssl/localhost.key 2048
&& openssl req -new -x509 -key src/server/ssl/localhost.key -out src/server/ssl/localhost.crt -config src/server/ssl/localhost.cnf
&& openssl req -new -out src/server/ssl/localhost.csr -config src/server/ssl/localhost.cnf
&& openssl x509 -req -in src/server/ssl/localhost.csr -CA src/server/ssl/localhost.crt -CAkey src/server/ssl/localhost.key -CAcreateserial -out src/server/ssl/ca.crt",

Sử dụng localhost.cnf như mô tả:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = UK
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.