Codeigniter集成Jumbojett OpenID遇ERR_SSL_PROTOCOL_ERROR求助
排查Codeigniter + Jumbojett OpenID认证跳转SSL端口错误问题
1. 修正Codeigniter base_url配置
确保config.php中的base_url明确指定HTTPS协议和443端口,避免框架自动检测端口时误判:
$config['base_url'] = 'https://你的域名.com:443/';
2. 开启Codeigniter全局强制HTTPS
在config.php中开启强制HTTPS,确保所有路由都走SSL:
$config['force_https'] = TRUE;
3. 检查Jumbojett OpenID回调URL
初始化OpenID客户端时,必须明确指定HTTPS协议的回调地址,同时确认身份提供商(IDP)后台配置的回调地址完全一致:
$client = new OpenIDConnectClient( 'https://你的IDP域名.com', '你的客户端ID', '你的客户端密钥', 'https://你的应用域名.com/认证回调路径' // 必须为HTTPS地址 );
4. 更新.htaccess重写规则
添加强制HTTPS跳转规则,确保所有HTTP请求自动转向HTTPS:
RewriteEngine On # 强制跳转HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Codeigniter默认路由重写 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
如果服务器HTTPS使用非标准443端口,需在RewriteRule中补充端口号,例如https://%{HTTP_HOST}:443%{REQUEST_URI}
5. 配置服务器反向代理环境变量(若使用)
如果用Nginx反向代理,需在虚拟主机配置中传递正确的HTTPS标识:
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port;
如果用Apache,启用mod_headers模块后,在虚拟主机配置中添加:
RequestHeader set X-Forwarded-Proto "https"
内容的提问来源于stack exchange,提问作者Codeboy Newbie
相关产品推荐
相关产品推荐

