Câu hỏi Làm thế nào để bạn thêm một cơ quan cấp chứng chỉ (CA) vào Ubuntu?


Công việc của tôi đã quyết định phát hành cơ quan cấp chứng chỉ (CA) để xử lý các khía cạnh khác nhau của công việc của chúng tôi một cách an toàn mà không phải trả tiền cho các chứng chỉ.

  • Ký điện tử bằng email
  • Mã hóa nội dung email
  • Truy cập vào những thứ như công ty IRC chứng chỉ ứng dụng khách.
  • Thu hồi chìa khóa của nhân viên cũ tự động

Họ đã gửi cho tôi một .pem và tôi không biết cách thêm nó vào bản cài đặt Ubuntu của mình. Các hướng dẫn được gửi là: "Nhấp đúp vào nó trên máy Mac sẽ cài đặt nó."

Làm cách nào để tiếp tục? Tôi có cần làm gì không OpenSSL để tạo ra một .key, .csr, hoặc là .crt tập tin?


134
2018-06-15 16:14


gốc




Các câu trả lời:


Cài đặt CA

Sao chép chứng chỉ của bạn ở định dạng PEM (định dạng có ----BEGIN CERTIFICATE---- trong đó) /usr/local/share/ca-certificates và đặt tên nó bằng một .crt phần mở rộng tệp.

Sau đó chạy sudo update-ca-certificates.

Hãy cẩn thận: Cài đặt này chỉ ảnh hưởng đến các sản phẩm sử dụng kho chứng chỉ này. Một số sản phẩm có thể sử dụng các cửa hàng chứng chỉ khác; nếu bạn sử dụng các sản phẩm đó, bạn cũng sẽ cần phải thêm chứng chỉ CA này vào các cửa hàng chứng chỉ khác. (Hướng dẫn về Firefox, Hướng dẫn của Chrome, Hướng dẫn Java)

Kiểm tra CA

Bạn có thể xác minh xem điều này có hoạt động hay không bằng cách tìm kiếm chứng chỉ mà bạn vừa thêm vào /etc/ssl/certs/ca-certificates.crt (đó chỉ là một danh sách dài tất cả các CA đáng tin cậy của bạn được nối với nhau).

Bạn cũng có thể sử dụng s_client của OpenSSL bằng cách cố gắng kết nối với một máy chủ mà bạn biết đang sử dụng một chứng chỉ được ký bởi CA mà bạn vừa cài đặt.

$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
   i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com

... snip lots of output ...

    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

Điều đầu tiên cần tìm là chuỗi chứng chỉ gần đầu đầu ra. Điều này sẽ hiển thị CA với tư cách là tổ chức phát hành (bên cạnh i:). Điều này cho bạn biết rằng máy chủ đang trình bày chứng chỉ được CA bạn đang cài đặt ký.

Thứ hai, tìm kiếm verify return code cuối cùng được đặt thành 0 (ok).


179
2018-02-19 19:13



cái này thực sự hoạt động - Sabareesh Kkanan
Cảm ơn bạn đã lưu ý rằng firefox / chrome không sử dụng kho lưu trữ cert mặc định. - shokora
Lưu ý rằng cập nhật-ca-giấy chứng nhận có thể rất khó tính (có thể là do thiết kế). mycert.pem.crt KHÔNG hoạt động, nhưng mycert.crt đã làm. Tôi cũng nghĩ rằng nó cần phải là / usr / local / share / ca-certificate, không phải / usr / share / ca-certificate (mặc dù những gì các chú thích đã nói trong /etc/ca-certificates.conf). - labyrinth
Cảm ơn vì crt nhận xét mở rộng, đó là bí quyết để có được công việc này cho tôi, tôi đã được cấp chứng nhận với cert phần mở rộng và bị nhầm lẫn là tại sao không có gì làm việc. - Ransom Briggs
Một caveat: s_client không gửi SNI theo mặc định và máy chủ có thể cần SNI đặc biệt nếu máy chủ hỗ trợ các máy chủ / trang web ảo có các chứng chỉ khác nhau; cho trường hợp này thêm -servername foo.whatever.com. Hoặc nếu đó là web sử dụng máy chủ (phiên bản hiện tại) curl hoặc là wget làm SNI tự động. - dave_thompson_085


người cập nhật-ca-giấy chứng nhận:

update-ca-certificates  is  a  program  that  updates   the   directory
/etc/ssl/certs to hold SSL certificates and generates certificates.crt,
a concatenated single-file list of certificates.

It reads the file /etc/ca-certificates.conf. Each line gives a pathname
of  a  CA  certificate  under /usr/share/ca-certificates that should be
trusted.  Lines that begin with "#" are comment lines and thus ignored.
Lines  that  begin with "!" are deselected, causing the deactivation of
the CA certificate in question.

Furthermore   all   certificates   found   below   /usr/local/share/ca-
certificates are also included as implicitly trusted.

Từ phía trên, tôi sẽ suy ra rằng cách ưu tiên để lấy tệp chứng chỉ cục bộ vào cửa hàng đáng tin cậy là đưa chúng vào /usr/local/share/ca-certificatesvà sau đó chạy update-ca-certificates. Bạn không cần phải chạm vào /etc/ssl/certs trực tiếp.


56
2018-06-15 18:07



Đặt tên cho các chứng chỉ có phần mở rộng .crt dường như cũng được yêu cầu. - phyzome
Cảm ơn bạn đã lưu ý @phyzome - sẽ không thể thêm chứng chỉ của tôi nếu không. - Seiyria


Tôi có cùng một vấn đề và tôi phải sao chép .pem tập tin để /usr/local/share/ca-certificates, đổi tên nó thành .crt. Các .cer tệp có thể dễ dàng được chuyển đổi thành .pem, với openssl, ví dụ, nếu bạn không có .pem.

Sau khi sao chép tệp, bạn phải thực thi sudo update-ca-certificates.


15
2018-04-30 13:39



openssl x509 -inform DER -in certificate.cer -out certificate.crt - webwurst


Các câu trả lời khác liên quan đến update-ca-certificates là chính xác cho các ứng dụng đọc từ kho chứng chỉ hệ thống. Đối với Chrome và Firefox, và có thể một số khác, chứng chỉ phải được đặt trong nssdb, phần phụ trợ cho thư viện Mozilla NSS.

Từ https://code.google.com/p/chromium/wiki/LinuxCertManagement:

Ví dụ: để tin tưởng chứng chỉ CA gốc để phát hành chứng chỉ máy chủ SSL, hãy sử dụng

certutil -d sql: $ HOME / .pki / nssdb -A -t "C ,," -n <biệt danh chứng chỉ> -i <tên tệp chứng chỉ>

Ở đâu <certificate nickname> là tùy ý, và <certificate filename> là tệp .pem hoặc .crt của bạn.

Các tài liệu tham khảo hữu ích khác:


12
2017-10-10 18:46



cảm ơn. Nó hoạt động trên Ubuntu 16.04 cho Chrome 53.0.2785.143, nhưng Firefox 49 dường như có db lưu trữ riêng biệt và phải được thêm từ about: preferences # advanced [View Certiticates] -> [Authorities] -> [Import] Thông tin thêm về cửa hàng cert firefox. askubuntu.com/a/248326/535154 - mauron85
Nhân tiện, nếu bạn muốn cài đặt cert trước lần chạy Chrome đầu tiên (tức là trong khi .pki / dir vẫn bị thiếu), trước tiên bạn phải tạo nssdb: mkdir -p $HOME/.pki/nssdb && chmod -R 0700 $HOME/.pki && certutil -d sql:$HOME/.pki/nssdb -N --empty-password - akavel
Có một cách để Chrome và Firefox đọc từ kho chứng chỉ hệ thống. Xem câu trả lời của tôi: superuser.com/a/1312419/506107 - wheeler


Đối với các bản dựng mới hơn dựa trên Debian, bạn có thể cần phải chạy:

sudo dpkg-reconfigure ca-certificates

LƯU Ý: sudo dpkg-reconfigure ca-chứng chỉ gọi cập nhật-ca-giấy chứng nhận nội bộ

Tất nhiên bạn sẽ cần phải sao chép chứng chỉ (tập tin .crt) vào / usr / share / ca-certificate trước khi thực hiện bất kỳ thao tác nào trong số này :)


8
2017-09-02 06:19





Xây dựng trên dwmw2's câu trả lời, bạn có thể thực sự nói với các ứng dụng sử dụng NSS để quản lý chứng chỉ của nó để sử dụng kho lưu trữ tin cậy của hệ thống.

libnss3 theo mặc định, tàu có bộ chỉ đọc CA gốc (chỉ đọc)libnssckbi.so), do đó, hầu hết thời gian bạn cần phải thêm chúng theo cách thủ công vào cửa hàng tin cậy người dùng cục bộ ở $HOME/.pki/nssdb. p11-kit cung cấp một thay thế thả cho libnssckbi.so hoạt động như một bộ điều hợp cho các chứng chỉ gốc toàn hệ thống được cài đặt trong /etc/ssl/certs.

Chỉnh sửa:

Dường như có nhiều phiên bản libnssckbi.so ngoài đó libnss3. Sau đây là một kịch bản để tìm tất cả, sao lưu chúng và thay thế chúng bằng các liên kết đến p11-kit:

sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

Hướng dẫn ban đầu:

Để thực hiện việc này, hãy cài đặt p11-kit và libnss3 (nếu chúng chưa được thu hút):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

Sau đó sao lưu hiện tại libnssckbi.so cung cấp bởi libnss3:

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak

Cuối cùng, tạo liên kết tượng trưng:

sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

Để xác nhận rằng nó hoạt động, bạn có thể chạy ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so và nó sẽ hiển thị liên kết:

lrwxrwxrwx 1 root root 49 Apr  9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Bây giờ, nếu bạn thêm chứng chỉ vào kho lưu trữ CA bằng cách sử dụng update-ca-certificates, các chứng chỉ đó sẽ có sẵn cho các ứng dụng sử dụng NSS (libnss3) như Chrome.


1
2018-04-10 01:00





Như đã lưu ý, các ứng dụng khác nhau sử dụng NSS có kho lưu trữ chứng chỉ của riêng chúng. Khi mọi thứ đứng trên Ubuntu, bạn phải tự sử dụng certutil để thêm các CA của bạn cho mỗi ứng dụng, cho mỗi người dùng.

Trong các bản phân phối khác như Fedora, loại điều này chỉ hoạt động và bạn nên gửi một lỗi chống lại bất kỳ ứng dụng nào không tự động tin cậy các CA mà bạn cài đặt update-ca-trust.

Bạn cũng có thể sửa lỗi này trong Ubuntu bằng cách cài đặt p11-kit-modules gói và sau đó thay thế NSS tích hợp rễ tin cậy module với p11-kit-trust.sobằng cách tạo liên kết tượng trưng cho ví dụ từ /usr/lib/firefox/libnssckbi.so đến /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Sau đó bạn sẽ có được các gốc tin cậy được cấu hình của hệ thống, chứ không phải một số phần cứng được mã hóa. Lưu ý rằng Ubuntu phân phối nhiều khác nhau bản sao của thư viện libnssckbi.so đó với các gốc tin cậy được mã hóa cứng, và bạn phải thay thế tất cả chúng!

cf. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285


1
2017-12-12 12:36



Khi tôi đã làm sudo find / -type f -name "libnssckbi.so", Tìm thấy rồi libnssckbi.so ở ba nơi: /usr/lib/thunderbird/, /usr/lib/firefox/và /usr/lib/x86_64-linux-gnu/nss/. Vì vậy, bạn đang nói rằng tôi nên liên kết libnssckbi.so trong cả ba thư mục đó p11-kit-trust.so? - wheeler
Ok, vừa xác nhận rằng liên kết /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so làm việc như người ở. Tôi đã có thể thêm chứng chỉ vào /usr/local/share/ca-certificates, chạy sudo update-ca-certificatesvà PRESTO, Chrome bắt đầu chấp nhận chứng chỉ tự ký. - wheeler