簡體   English   中英

WSO2 - 禁用 HTTPS

[英]WSO2 - disable HTTPS

如何為 WSO2 Api 管理器(admin/gw/其他組件)禁用 HTTPS? 我們希望在我們的前端負載均衡器上終止 SSL——而不是在 WSO2 產品的末端。 如果我訪問端口 9763,我將被重定向到 9443。我們正在運行使用 docker-images 部署的 2.1.0。

你必須做到以下幾點

  1. 轉到 $WSO2_HOME/repository/conf 並打開 carbon.xml,並取消注釋

    <EnableHTTPAdminConsole>true</EnableHTTPAdminConsole>
  2. 禁用 $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 中,應該沒有額外的安全問題)

注意:以下方法僅在單租戶(超級租戶)場景中進行了測試。

  1. 對於碳控制台,Abimaran 建議的方法應該可行。
  2. 對於商店組件,需要進行一些更改。

將 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);
}
  1. 對於發布者組件,應進行以下更改。

存儲庫/部署/服務器/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>

在這種情況下,所有公共端口都與“私有”端口相同。

參考https://apim.docs.wso2.com/en/latest/install-and-setup/setup/setting-up-proxy-server-and-the-load-balancer/configuring-the-proxy-server- and-the-load-balancer/#configuring-the-proxy-server-and-the-load-balancer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM