nginxsslhttphttps共存キックバッククレジット決済

2016年11月1日更新 view: 21 view
http://www.redmercury.co.jp/images/130223-RED-9767-2.jpg

キックバックURLがSSLだとうまく動かないよ

ERR disctiption] ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

って感じのエラーが出て、うまくキックバックが動かない。
理由はjavaがどうのこうのらしいが、javaなんてわからん。

ということで、

・キックバックURLにアクセスがあった場合のみ http 接続許可

をnginxでやります。

以下を
vim /etc/nginx/conf.d/default.conf
に記述

server {

listen 80;
server_name your.com;
root /var/www/html/your.com/app/webroot/;


index index.html index.php;

location /app/webroot/ {
alias /var/www/html/your.com/app/webroot/;
}


# 最長一致なので、以下に該当しないものは全て https へ
location / {
return 301 https://your.com$request_uri;
}

#このURLのときは、httpのまま動作
location /hoges/kicksuccess/ {
try_files $uri $uri/ /index.php?$uri&$args;
}


#このURLはのときは、httpのまま動作
location /admins/credit/ {
try_files $uri $uri/ /index.php?$uri&$args;
}

#phpを動かす
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}





server {


listen 80;
listen 443 ssl http2;
listen [::]:443 ssl http2;


#sslの設定ここから
ssl_certificate /etc/letsencrypt/live/your.com/fullchain.pem;#ここをfullchain.pemに変更
ssl_certificate_key /etc/letsencrypt/live/your.com/privkey.pem;
ssl_dhparam /etc/letsencrypt/live/your.com/dhparam.pem;

ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDH !aNULL !eNULL !SSLv2 !SSLv3';
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
#ここまでsslの設定

server_name your.com;
root /var/www/html/your.com/app/webroot/;
index index.html index.php;

location ^~ /.well-known/acme-challenge/ {
root /var/www/html/your.com/acme/;
}

location = /.well-known/acme-challenge/ {
return 404;
}


location /app/webroot/ {
alias /var/www/html/your.com/app/webroot/;
}


#httpsの時はhttpへ強制移動
location /hoges/kicksuccess/ {
return 301 http://your.com$request_uri;
}


#httpsの時はhttpへ強制移動
location /admins/credit/ {
return 301 http://your.com$request_uri;
}




location /phpmyadmin {

alias /usr/share/phpMyAdmin/; try_files $uri $uri/ /index.php;

location ~ ^/phpmyadmin/(.+\.php)$ {
alias /usr/share/phpMyAdmin/;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin/$1;
include fastcgi_params;
fastcgi_intercept_errors on;
}

}


location / {
try_files $uri $uri/ /index.php?$uri&$args;
}


location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
スポンサードリンク

すると /hoges/kicksuccess/にアクセスした場合のみ http で動作。
それ以外は https に飛ばすようになります。

また、デバッグする際は、他のサイトから file_get_contents をしましょう。
ブラウザで直接アクセスすると httpやらhttpsがごっちゃになるので。

スポンサードリンク

関連記事

関連カテゴリ