[英]WSO2 - disable HTTPS
如何為 WSO2 Api 管理器(admin/gw/其他組件)禁用 HTTPS? 我們希望在我們的前端負載均衡器上終止 SSL——而不是在 WSO2 產品的末端。 如果我訪問端口 9763,我將被重定向到 9443。我們正在運行使用 docker-images 部署的 2.1.0。
你必須做到以下幾點
轉到 $WSO2_HOME/repository/conf 並打開 carbon.xml,並取消注釋
<EnableHTTPAdminConsole>true</EnableHTTPAdminConsole>
禁用 $WSO2_HOME/repository/conf/tomcat/carbon/WEB-INF/web.xml 文件中的安全 cookie 參數。
<session-config> <cookie-config> <secure>false</secure> </cookie-config> </session-config>
假設 David 的系統配置沒有引入安全問題,以下應該可行。 (如果負載均衡器和 WSO2 產品在同一個私有網絡或 VPC 中,應該沒有額外的安全問題)
注意:以下方法僅在單租戶(超級租戶)場景中進行了測試。
將 repository/deployment/server/jaggeryapps/store/site/themes/wso2/templates/user/login/redirector.jag 中的內容替換為以下內容。
<%
include("/jagg/jagg.jag");
var site = require("/site/conf/site.json");
var tenant = jagg.getTenantDomain();
var queryString = "";
session.put("showLogin", "true");
session.put("redirectToHTTPS", jagg.getHttpsUrl("/site/pages/login.jag")+queryString);
response.sendRedirect(jagg.getHttpsUrl("/site/pages/login.jag") + queryString);
%>
替換 repository/deployment/server/jaggeryapps/store/jagg/jagg.jag 中的 getHttpsUrl 函數定義
var getHttpsUrl = function(path, parameters){
var hostname = "";
var requestSegments = getRequestSegments();
var protocol = "https://";
mod = jagg.module("manager");
var requestUrl = request.getRequestURL();
if(requestUrl.indexOf("https://") != -1 ){
hostname = mod.getHTTPsURL();
hostname = hostname.replace("https://","");
} else if (requestUrl.indexOf("http://") != -1 ) {
hostname = mod.getHTTPURL();
hostname = hostname.replace("http://","");
protocol = "http://";
}
// if the site is fronted by a proxy server
if(isReverseProxyEnabled()){
hostname = site.reverseProxy.host ;
//if a custom https port is used
if(site.reverseProxy.hosts_port){
hostname = hostname + ":" + site.reverseProxy.hosts_port;
}
}
return protocol + hostname + url(path, parameters);
}
存儲庫/部署/服務器/jaggeryapps/publisher/site/themes/wso2/templates/user/login/template.jag
更換零件
<% if(request.isSecure()){
if(jagg.getUser() != null){
response.sendRedirect('index.jag');
}
%>
和
<% if(true){
if(jagg.getUser() != null){
response.sendRedirect('index.jag');
}
%>
注意:安全性完全取決於系統架構。 此外,上述配置是獨立的。 如果您需要讓 https 訪問所有組件,請執行所有操作。 對於特定的一個,單獨的配置應該可以工作。
希望能幫助到你。
在版本 5.10.0 和 Windows 10 的情況下,
#1 打開“C:\\Program Files\\WSO2\\Identity Server\\5.10.0\\repository\\resources\\conf\\default.json”
#2 更改三個字段
從
"transport.https.properties.scheme": "https",
"transport.https.properties.secure": "true",
"transport.https.properties.SSLEnabled": "true",
到
"transport.https.properties.scheme": "http",
"transport.https.properties.secure": "false",
"transport.https.properties.SSLEnabled": "false",
#3 啟動服務器批處理 wso2server.bat
#4 打開瀏覽器 http://localhost:9443/
在 WSO2 API 上禁用 SSL 管理器意味着更改不同的文件(對於它具有的不同組件),引入一些安全問題並且在更新的情況下您必須小心維護相同的邏輯(至少弄清楚要更改的文件) .
但是除了在 WSO2 上禁用 HTTPS 之外,還有另一種可能性。您仍然可以在負載平衡器/反向代理上終止 SSL,但是負載平衡器/反向代理和 WSO2 之間的連接是一個“新”882135378641788 連接,它使用WSO2 行為。
為此,您必須更改deployment.toml以包含以下內容(假設負載均衡器/反向代理服務於與 WSO2 相同的端口,並且在您可以在環境中設置的確定主機名中:
[server]
hostname = "REPLACE_BY_PUBLIC_DOMAIN"
...
[apim.devportal]
url = "https://REPLACE_BY_PUBLIC_DOMAIN:${mgt.transport.https.port}/devportal"
然后您需要將您的負載均衡器/反向代理配置為“代理傳遞”到 WSO2。在下面的參考中有NGINX的配置。 對於Apache可以是這樣的:
LoadModule ssl_module modules/mod_ssl.so
ErrorLog "/dev/stdout
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog /dev/stdout common
Listen 9443
Listen 8243
Listen 8280
NameVirtualHost *:80
NameVirtualHost *:9443
NameVirtualHost *:8243
NameVirtualHost *:8280
<VirtualHost *:80>
ServerName REPLACE_BY_PUBLIC_DOMAIN
Redirect "/" "https://REPLACE_BY_PUBLIC_DOMAIN/"
</VirtualHost>
<VirtualHost *:9443>
ServerName REPLACE_BY_PUBLIC_DOMAIN
SSLProxyEngine on
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerExpire Off
SSLEngine on
SSLCertificateFile "/usr/local/apache2/cert/fullchain.pem"
SSLCertificateKeyFile "/usr/local/apache2/cert/privkey.pem"
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / https://REPLACE_BY_WSO2_IP:9443/
ProxyPassReverse / https://REPLACE_BY_WSO2_IP:9443/
</VirtualHost>
<VirtualHost *:8243>
ServerName REPLACE_BY_PUBLIC_DOMAIN
SSLProxyEngine on
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerExpire Off
SSLEngine on
SSLCertificateFile "/usr/local/apache2/cert/fullchain.pem"
SSLCertificateKeyFile "/usr/local/apache2/cert/privkey.pem"
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / https://REPLACE_BY_WSO2_IP:8243/
ProxyPassReverse / https://REPLACE_BY_WSO2_IP:8243/
</VirtualHost>
<VirtualHost *:8280>
ServerName REPLACE_BY_PUBLIC_DOMAIN
SSLProxyEngine on
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerExpire Off
SSLEngine on
SSLCertificateFile "/usr/local/apache2/cert/fullchain.pem"
SSLCertificateKeyFile "/usr/local/apache2/cert/privkey.pem"
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / https://REPLACE_BY_WSO2_IP:8280/
ProxyPassReverse / https://REPLACE_BY_WSO2_IP:8280/
</VirtualHost>
在這種情況下,所有公共端口都與“私有”端口相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.