Làm cách nào để giữ bí mật khóa ssl cho trang web của chúng tôi?


12

Tôi muốn giữ bí mật khóa SSL cho trang web của chúng tôi. Nó được lưu trữ trên 2 thanh USB, một trong hộp ký gửi an toàn và một trong tôi giữ an toàn. Và sau đó tôi là người duy nhất áp dụng nó cho máy chủ web để nó hoàn toàn an toàn.

Ngoại trừ...

Trên IIS ít nhất, bạn có thể xuất khóa. Vì vậy, bất cứ ai là quản trị viên đều có thể nhận được một bản sao của khóa. Có cách nào để khắc phục điều này? Hoặc theo định nghĩa, tất cả quản trị viên có quyền truy cập đầy đủ vào tất cả các khóa?

Cập nhật: Tôi có sysadins tôi hoàn toàn tin tưởng. Điều dẫn đến việc này là một trong số họ bỏ việc (họ đã có một giờ đi làm với công ty chúng tôi, 5 phút đi lại cho công ty mới). Mặc dù tôi tin tưởng cá nhân này, giống như chúng tôi vô hiệu hóa tài khoản Active Directory của họ khi ai đó rời đi, tôi nghĩ rằng chúng tôi nên có một cách để đảm bảo họ không giữ được khả năng sử dụng SSL của chúng tôi.

Và điều khiến tôi dễ dàng nhất là nếu tôi là người duy nhất có nó. Chứng chỉ của chúng tôi hết hạn vào tháng 1 vì vậy đây là thời gian để thay đổi thực hành nếu chúng tôi có thể. Dựa trên các câu trả lời có vẻ như chúng ta không thể.

Vì vậy, điều này dẫn đến một câu hỏi mới - khi ai đó có quyền truy cập vào chứng chỉ rời đi, đó có phải là thông lệ tiêu chuẩn để có được chứng chỉ mới và bị thu hồi chứng chỉ hiện có. Hoặc nếu người rời đi là đáng tin cậy, thì chúng ta có tiếp tục với chứng chỉ mà chúng ta có không?


5
Ngay cả khi máy chủ bạn sử dụng không cho phép bạn xuất nó, nó vẫn phải nằm trong bộ nhớ và do đó có thể được giải nén. Tùy chọn duy nhất tôi thấy là sử dụng mô-đun mật mã phần cứng, như thẻ thông minh là ba chỉ một với khóa, nhưng bất kỳ ai có quyền truy cập vật lý vào máy đều có thể đánh cắp nó. Bạn vẫn có thể thu hồi nó nếu nó bị đánh cắp.
user2313067 9/12/14

27
Nếu bạn không thể tin tưởng quản trị viên của mình, bạn có vấn đề về nhân sự.
Michael Hampton

5
Tại sao bạn lại sao chép khóa vào phương tiện USB đó ngay từ đầu? Khóa bí mật được sử dụng với SSL không cần phải ở những nơi khác ngoài máy chủ được sử dụng. (Tất nhiên nó có thể được bao gồm trong các bản sao lưu của máy chủ, nhưng việc sao lưu khóa đó ít quan trọng hơn các dữ liệu khác trên máy chủ, vì bạn luôn có thể tạo khóa bí mật mới và ký tên như bạn đã làm với cũ.)
kasperd

Tôi không phải là chuyên gia trong lĩnh vực này, nhưng không tồn tại các mô-đun mã hóa phần cứng có chứa khóa tồn tại bên trong chúng và chỉ có các yêu cầu ký đi vào và chữ ký xuất hiện? Hàn hoặc dán một cái vào máy chủ có thể là giải pháp.
chiến lược

Câu trả lời:


26

Một người có quyền truy cập quản trị (hoặc thậm chí là vật lý) vào máy chủ sẽ có thể trích xuất khóa riêng. Cho dù thông qua xuất khẩu, đánh hơi bộ nhớ, hoặc lừa khác như vậy.

Quản trị viên của bạn có quyền truy cập vào các khóa riêng của máy chủ web của bạn. Chấp nhận điều này là thực tế, và làm việc xung quanh đó. Nếu hệ thống của bạn không đáng tin cậy, thì bạn có thể cần các hệ thống tốt hơn hoặc ít nhất là ít hệ thống có quyền truy cập vào máy chủ web. Nếu đó là vấn đề hoang tưởng an ninh quản lý, thì có thể có một vấn đề sâu sắc hơn về khả năng tin tưởng một sysadmin của họ.

Điều này không có nghĩa là bạn chỉ nên để mọi người có quyền truy cập vào khóa riêng. Luôn luôn cần có quyền truy cập trước khi quyền truy cập được cấp. Với ý nghĩ đó, bạn sẽ thực hiện các biện pháp cực đoan để đảm bảo rằng một sysadmin với toàn quyền kiểm soát trang web không thể xuất khóa riêng, nhưng vẫn có thể tự thao túng trang web theo bất kỳ cách nào gần như không thể kiểm soát được? Chúng tôi trở lại để tin tưởng ở đây, và tôi nghĩ đó là cốt lõi của vấn đề cần được giải quyết.


2
+1 cho "Quản trị viên của bạn có quyền truy cập vào khóa riêng của máy chủ web của bạn. Chấp nhận điều này là sự thật và giải quyết vấn đề đó". Các câu hỏi về tác dụng của "Làm cách nào để ngăn những người có quyền quản trị thực hiện X?" chỉ ra một vấn đề sâu sắc hơn với tôi. Hoặc quá không tin tưởng hoặc quá lỏng lẻo trong việc đưa ra quyền quản trị.
Brandon

2
Tôi cập nhật với lý do tại sao tôi hỏi. Đó không phải là mối quan tâm với các sysadins, đó là mong muốn tuân theo các thực tiễn tốt nhất.
David Thielen

11

Khi bạn nhập khóa, bạn có tùy chọn đánh dấu là không thể xuất. Điều này sẽ ngăn bạn sử dụng IIS hoặc MMC chứng chỉ để xuất nó. Ít nhất, nó làm cho nó khó hơn một chút.

Tuy nhiên, nếu họ có tài khoản quản trị viên trên máy hoặc có quyền truy cập vật lý vào tài khoản đó - họ vẫn có thể nhận được khóa thông qua các phương tiện khác.


1
Nó thực sự không khó hơn nhiều. isecpartners.com/tools/application-security/jailbreak.aspx
Greg Askew

0

Đây là nơi "CA trung gian" có thể giúp đỡ.

"Root CA" trong ví dụ dưới đây thuộc sở hữu của một công ty SSL chứ không phải bạn.

Bạn không có quyền kiểm soát trực tiếp các khóa được tạo bởi Root CA, vì vậy nếu một khóa được ký bởi Root CA bị xâm phạm, bạn phải thông qua chúng để thu hồi nó.

Nhưng:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key for site

Nếu bạn đặt một CA khác ở giữa và chứng chỉ SSL đã mua của bạn ký chứng chỉ CA của riêng bạn thay vì ký trực tiếp chứng chỉ máy chủ của bạn, bạn có thể giữ quyền kiểm soát chứng chỉ máy chủ bên dưới và cấp chứng chỉ hủy bỏ hoặc làm bất cứ điều gì khác nếu những điều bên dưới bị xâm phạm .

Bạn giữ khóa riêng CA trung gian cho chính mình và quản trị viên không cần phải xem.

Bạn cũng có thể làm điều này:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key 1 for site
   +-Server Key 2 for site 
   +-Server Key 3 for site

Bạn có thể chuẩn bị thỏa hiệp và tạo chứng chỉ trước thời hạn, vì vậy bạn có thể chuyển đổi nhanh chóng trong trường hợp một khóa riêng lẻ bị thu hồi. Quản trị viên không nhận được khóa cho 2 hoặc 3 cho đến khi thỏa hiệp 1. Bạn có thể đặt thông báo trên trang web của mình về chương trình này và điều này cũng sẽ thông báo cho quản trị viên của bạn rằng bạn đã sẵn sàng trong trường hợp thỏa hiệp và doanh nghiệp hài hước đó kết thúc sẽ không phá hủy trang web của bạn.


1
Điều này có gây ra cảnh báo SSL cho người dùng về CA không đáng tin không?
ceejayoz

1
Tôi đoán điều này sẽ chỉ hoạt động tốt nếu bạn có thể cài đặt CA làm chứng chỉ tin cậy trên trình duyệt của người dùng, chẳng hạn như trong cài đặt mạng nội bộ của công ty. Tôi biết có gì đó không ổn với sơ đồ sáng chói của tôi. :(
LawrenceC

0

Có nhiều bài viết đề nghị lưu trữ khóa riêng ở một nơi khác ngoài máy chủ nhưng những khóa riêng đó là dành cho chứng chỉ ký mã . Hãy tưởng tượng bạn có các khóa trên máy tính ngoại tuyến mà chỉ bạn có quyền truy cập, một số phần mềm được viết, bạn nhận được khóa riêng từ máy chủ ngoại tuyến, ký mã và sau đó bạn không cần khóa riêng cho đến khi bạn cần ký một số mã lại.

Giải pháp tốt nhất đã luôn luôn và sẽ tiếp tục lưu trữ khóa của bạn ngoại tuyến. Cách bạn thực hiện hoàn toàn tùy thuộc vào bạn (có một vài phương pháp), chỉ cần nhớ giữ cho nó được bảo vệ cẩn thận trong một văn phòng an toàn hoặc ở một nơi nào đó không dễ để ai đó bỏ túi.

Đọc thêm tại: https://www.thesslstore.com/blog/heres-what-happens-when-your-private-key-gets-compromised/

Ngược lại, chứng chỉ SSL dành cho các trang web để cho phép giao tiếp HTTPS: Khóa riêng là cần thiết trong mỗi lần bắt tay của máy chủ web. Do đó, lưu trữ ngoại tuyến sẽ không hoạt động.

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.