您好,登錄后才能下訂單哦!
關于平臺配置https證書
準備內容:
1、授權可以的證書文件
2、Nginx上配置證書
3、后端iis上站點上配置證書
4、程序代碼調整判斷
一、在Nginx上配置證書
listen 443 ssl;
ssl on;
ssl_certificate /usr/local/nginx/keys/xxx.com.pem;
ssl_certificate_key /usr/local/nginx/keys/xxx.com.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
ssl_prefer_server_ciphers on;
server_name xxx.xxx.com;
index index.html;
access_log logs/ssl.lan.xxx.xxx.com access_log;
在Nginx中,配置的負載后端服務信息
這里需要注意在proxy_pass配置中, 需要使用https方式
二、iis上配置證書
1、導入證書
打開mmc控制臺,添加證書配置項
通過導入對應的證書文件, 導入“個人”,“中級證書頒發機構” 這2個節點都需要導入操作。
2、應用站點配置證書
在前面的正確導入證書后,配置站點時選擇https類型后,在SSL證書中,就可以看到導入成功的證書信息
這里需要注意的是證書授權的域名需要相同,并且對應二級域名不要多個“ . "號出現
這里的配置端口30011,這個是提供給Nginx配置中,負載使用的
說明:這里的主機名,可以不配置,在nginx負載時,可以通過ip和端口找到
三、程序中配置支持https
程序中,相關的考試,計時,視頻,登錄相關地址,根據當上下文中的IsSecureConnection 判斷連接信息
//
// 摘要:
// 獲取一個值,指示 HTTP 連接是否使用安全套接字(即 HTTPS)。
//
// 返回結果:
// 如果連接是 SSL 連接,則為 true;否則為 false。
public bool IsSecureConnection { get; }
對應的web.config中配置相應的節點,這里主要是考慮支持http, https 兩種不同方式支持,在再則會方便測試環境中存在2種地址不同情況,因為做了2個節點的配置,正式使用時,理論上2種類型的域名地址配置的是相同的。
(可以根據類型配置不同的資源地址)
在平臺中,如登錄使用的是cas服務, 平臺側與cas進行驗票后,web.config需要進行如下配置:
<!--cas驗票需要,允許系統容忍只以CR或LF結尾的hearder信息-->
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true"/>
</settings>
</system.net>
在web.config中,增加如上節點的配置,否則會出現以下異常信息,造成用戶登錄不了
Ticket validation error: DotNetCasClient.Validation.TicketValidationException: CAS server ticket validation threw an Exception ---> System.Net.WebException: 服務器提交了協議沖突. Section=ResponseHeader Detail=CR 后面必須是 LF
附加說明:
1、針對使用DotNetCasClient組件時,如果需要看相應日志信息,需要對web.config增加如下配置
<system.diagnostics>
<trace autoflush="true" useGlobalLock="false"/>
<sharedListeners>
<add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="Logs\DotNetCasClient.Log" traceOutputOptions="DateTime"/>
</sharedListeners>
<sources>
<!-- Provides diagnostic information on module configuration parameters. -->
<source name="DotNetCasClient.Config" switchName="Config" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="TraceFile"/>
</listeners>
</source>
<!-- Traces IHttpModule lifecycle events and meaningful operations performed therein. -->
<source name="DotNetCasClient.HttpModule" switchName="HttpModule" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="TraceFile"/>
</listeners>
</source>
<!-- Provides protocol message and routing information. -->
<source name="DotNetCasClient.Protocol" switchName="Protocol" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="TraceFile"/>
</listeners>
</source>
<!-- Provides details on security operations and notable security conditions. -->
<source name="DotNetCasClient.Security" switchName="Security" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="TraceFile"/>
</listeners>
</source>
</sources>
<switches>
<add name="Config" value="Information"/>
<add name="HttpModule" value="Verbose"/>
<add name="Protocol" value="Information"/>
<add name="Security" value="Information"/>
</switches>
</system.diagnostics>
以下是平臺的nginx配置
server {
listen 443 ssl;
ssl on;
ssl_certificate /usr/local/nginx/keys/xxx.com.pem;
ssl_certificate_key /usr/local/nginx/keys/xxx.com.key;
ssl_session_timeout 5m;
#ssl_protocols SSLv3 TLSv1;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
ssl_prefer_server_ciphers on;
server_name xxx.xxx.com;
index index.html;
access_log logs/ssl.lan.xxx.xxx.com access_log;
配置永久http重定向https
[dangzheng@db1 extra]$ cat xxx-http-test.conf
server {
listen 80;
server_name xxx.xxx.com;
access_log logs/xxx.xxx.com.access.log access_log;
location / {
rewrite ^(.*) https://xxx.xxx.com/$1 permanent;
}
}
permanent 表示永久重定向
$1 表示域名后帶的參數信息
配置參考:http://blog.csdn.net/zhanglinjian21/article/details/7631515
配置Nginx 中的 default
解決低版本(xp ie8類似)瀏覽器,只能認到1個https證書問題,如果沒有配置,有多個證書時,瀏覽器訪問就會有可能找到不正確的證書,經起訪問不正常現象
五、SSL配置優化
1、HSTS
HSTS(HTTP Strict Transport Security)。服務端返回一個 HSTS 的 http header,瀏覽器獲取到 HSTS 頭部之后,在一段時間內,不管用戶輸入 www.baidu.com 還是 http://www.baidu.com ,都會默認將請求內部跳轉成https://www.baidu.com;
將下述行添加到你的 HTTPS 配置的 server 塊中:
add_header Strict-Transport-Security "max-age=31536000";
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 20m;
參照Nginx的官方文檔1MB內存大約可以存儲4000個session,按例配置20M大約可以存儲80000。根據需求合理設置
ssl_prefer_server_ciphers On; #指定服務器密碼算法在優先于客戶端密碼算法時
既需要https,也需要http,http需要跳轉到https
新版本,重新創建新的server配置
server {
listen 80;
server_name www.域名.com;
return 301 https://$server_name$request_uri;(進行跳轉)
}
server {
listen 443 ssl;
server_name www.域名.com;
ssl_certificate /usr/share/nginx/html/zhengshu/XX.XX.crt;(證書)
ssl_certificate_key /usr/share/nginx/html/zhengshu/XX.XX.key;(證書密鑰)
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。