2013-02-12 36 views
6

Tôi có một ứng dụng web, mà tôi xuất bản lên ba máy chủ web bằng cách sử dụng tùy chọn 'xuất bản'.Mã hóa WebConfig

Tôi muốn mã hóa phần kết nối của tệp cấu hình web. Lệnh dưới đây sẽ làm điều đó:

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" c:\inetpub\application 

Tuy nhiên, tôi phải RDP (Remote Desktop) cho mỗi máy chủ và chạy lệnh trên mỗi máy chủ như bạn không thể chạy nó như thế này (từ một máy tính khách hàng):

\ servername \ c $ \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -pef "connectionStrings" \ servername \ c $ \ inetpub \ ứng dụng

có cách nào tốt hơn để làm điều này: có lẽ:

1) Execu te một dòng lệnh trên máy chủ sau khi xuất bản 2) Sử dụng một lựa chọn xây dựng trong Visual Studio cho phép bạn thực hiện một tập tin batch sau khi xuất bản xong

+0

Tôi có thể hỏi tại sao bạn không tin tưởng máy chủ web của mình. Ngoài ra, thông thường khi bạn tạo gói triển khai, nó sẽ loại bỏ chuỗi kết nối. Tôi đã cấu hình các máy chủ IIS của tôi để xử lý điều này và thêm các chuỗi kết nối của chúng từ trong bàn điều khiển IIS. Điều này có lẽ sẽ tốt hơn so với truyền chuỗi kết nối trong tệp web.config vì nó cho phép dễ dàng hơn cho mỗi cấu hình máy/cân bằng tải. – Colton

+0

Ứng dụng web được triển khai cho một vài máy tính khách trong Mạng cục bộ. Nếu tôi không mã hóa phần chuỗi kết nối; bất kỳ ai cũng có thể xem mật khẩu cơ sở dữ liệu đã đăng nhập. – w0051977

+1

Đủ công bằng ... Bạn có thể sử dụng Bảo mật tích hợp không? Nếu các máy chủ được thiết lập đúng cách, điều này sẽ giảm thiểu hoàn toàn vấn đề của bạn nhưng việc thiết lập xác thực AD cho SQL có vẻ là một quá trình rất quan liêu. – Colton

Trả lời

1

Nếu an ninh tích hợp không phải là một lựa chọn, tôi đề nghị bạn MS Web Deploy .

Khi bạn tạo deployment package với Visual Studio 2012, bạn sẽ nhận được tệp zip và tệp tập lệnh dòng lệnh. Bạn có thể sửa đổi tập tin kịch bản đó để mã hóa web.config của bạn hoặc cuộn tập lệnh batch của riêng bạn hoặc tập lệnh PowerShell.

+0

hỗ trợ cho mã hóa web.config phần triển khai bài đã được thêm vào trong phiên bản 3.5 của triển khai Web. https://blogs.iis.net/msdeploy/archive/2013/07/09/webdeploy-3-5-rtw.aspx – cederlof

3

Mã hóa phần kết nốiStrings của web.config trên máy chủ của bạn rồi thêm phần được mã hóa này vào web của bạn. [CONFIGURATION_FOR_SERVER] tệp chuyển đổi .config. Chìa khóa là dòng đầu tiên cho biết thay thế phần connectionStrings của web.config ban đầu của bạn bằng giá trị được mã hóa mới này. Bạn sẽ cần một tệp chuyển đổi mới cho mỗi máy chủ mà bạn đang xuất bản. Visual Studio sẽ nâng cao một cảnh báo (không lỗi) tức là

Warning 15 The element 'connectionStrings' has invalid child element 'EncryptedData' in namespace 'http://www.w3.org/2001/04/xmlenc#'. List of possible elements expected: 'add, remove, clear'. C:\DevTFS\YourProject\Web.Stage.config 14 6 YourProject 

về định dạng của tập tin chuyển đổi này - tôi đã không tìm thấy cú pháp chính xác để làm được việc này vì vậy tôi mở để gợi ý, nhưng nó vẫn hoạt động Vì vậy tôi hạnh phúc. Full blog entry về điều này: http://randomdotnetnuggets.blogspot.com.au/2013/05/publishing-encrypted-connection-strings.html

<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider" xdt:Transform="Replace"> 
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" 
    xmlns="http://www.w3.org/2001/04/xmlenc#"> 
    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" /> 
    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> 
    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"> 
     <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /> 
     <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> 
     <KeyName>Rsa Key</KeyName> 
     </KeyInfo> 
     <CipherData>   
     <CipherValue>t8p7aOZTjMo...zE6FAAI=</CipherValue> 
     </CipherData> 
    </EncryptedKey> 
    </KeyInfo> 
    <CipherData> 
    <CipherValue>Vy1TZWY8....ic+Qg6T7U</CipherValue> 
    </CipherData> 
</EncryptedData> 

0

Đây là một câu hỏi cũ, nhưng câu trả lời này có thể giúp ai đó.

Trong trường hợp cân bằng tải hoặc trang trại, bạn có thể mã hóa tệp một lần và sao chép web.config sang các máy khác. Tuy nhiên, để làm việc này, bạn phải sử dụng cùng một Khóa Máy cho mỗi trang web.

https://msdn.microsoft.com/en-us/library/dtkwfdky.aspx

Hy vọng điều này sẽ giúp mọi người tìm kiếm điều này.