欢迎光临
我们一直在努力

https配置与安卓访问https失败,错误:fail ssl hand shake error

悠然见南山阅读(49)评论(0)

最近又遇到一个安卓访问有问题,苹果和电脑访问正常的现象;安卓访问https失败,错误:fail ssl hand shake error。

对于这个奇葩的错误,就之前的经验,只能反思是否是证书配置错误。网上有遇到过的,但是都么有给出修改方式。

后来找到了两个检测工具:

https://www.myssl.cn/tools/check-server-cert.html

https://www.ssllabs.com/ssltest/analyze.html

通过这两种检测工具检测后,基本就知道是什么原因了,要么是协议配置不支持,要么是证书缺失。

我们遇到的情况就是中间证书缺失,当时申请的时候按照旧的方式去申请,会生成两个.cer文件。

需要将:ovroot.cer中间证书copy出来贴到server.cer证书的后面,问题就解决了。

附带Nginx的ssl配置手册:

一、证书整理

ovroot.cer文件为服务商中间证书,server.cer为服务证书,需要将两个证书并使用,否则会出现安卓无法访问,会出现fail ssl hand shake error这个错误。

将ovroot.cer的证书复制出来贴到server.cer内容后面,不要有空行;

二、Nginx的配置如下:

server {

listen 443;

server_name spdwechat.ctyun.cn;      #对应的主机域名

ssl on;

ssl_certificate yun_cert/server.cer;//证书目录

ssl_certificate_key yun_cert/server.key;  #私钥

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

ssl_prefer_server_ciphers on;

location / {

proxy_pass http://cpsapi;    #实际的程序监听地址

proxy_set_header Host $host;

proxy_set_header X-Real-Ip $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto  $scheme;

}

access_log /server/logs/nginx/cps_rest_access.log main;

}

要支持TLSv1.2协议;

 

微信h5支付提示“网络环境未能通过安全验证 请稍后再试”

悠然见南山阅读(75)评论(0)

function getIp(){    
    $ip '';    
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){        
        $ip $_SERVER['HTTP_X_FORWARDED_FOR'];    
    }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){        
        $ip $_SERVER['HTTP_CLIENT_IP'];    
    }else{        
        $ip $_SERVER['REMOTE_ADDR'];    
    }
    $ip_arr explode(','$ip);
    return $ip_arr[0];
 }

QQ登录报错:redirect uri is illegal(100010) 解决方法[官方回复]

悠然见南山阅读(43)评论(0)

另外需要注意的一个问题是回调地址的填写是可以填写多个的用英文的;分割,别傻不拉唧的只填写一个,也别只填写一个根域名,可以写二级域名的。
回调地址设置问题
100010报错解析方法:打开http://open.qq.com/tools?act=url_encode =》复制QQ授权登录页面(100010报错页面)的全部地址 =》 URL编码解码工具=》URL解码。
解码之后查看实际回调地址(redirect_uri=之后到第一个&符号或者问号截止的部分)是否与QQ互联里网站回调域里填写的地址一致。不一致就会报错,修改设置使两个地方的回调地址保持一致即可解决。
可以先自己解析看看
回调地址验证机制已经调整,现在是全路径验证。设置规则:1、网站程序和QQ互联管理中心的回调都要使用完整的带http的URL;2、网站程序和QQ互联管理中心两个地方设置的回调地址必须完全一致
比如:QQ互联管理中心应用资料里面填写的回调地址是http://www.xxx.com/xxx/ 那么网站实际配置的回调 redirect_uri=必须是http://www.xxx.com/xxx/参数(此处是否带参数自行决定)
———————
作者:若水印象
来源:CSDN
原文:https://blog.csdn.net/ruoshuiyx/article/details/55506274
版权声明:本文为博主原创文章,转载请附上博文链接!

cURL error 60: SSL certificate problem

悠然见南山阅读(23)评论(0)

php在curl的时候报此错误:

cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
1
根据报错后面提示的地址查询60错误:

CURLE_SSL_CACERT (60)
Peer certificate cannot be authenticated with known CA certificates.
1
2
无法获取本地颁发者证书

网上搜的解决方法:(http://stackoverflow.com/questions/29822686/curl-error-60-ssl-certificate-unable-to-get-local-issuer-certificate)

关于“SSL证书问题:无法获取本地颁发者证书”错误。显然,这适用于发送CURL请求的系统(并且没有接收请求的服务器)

1)从 https://curl.haxx.se/ca/cacert.pem 下载最新的cacert.pem

2)将以下行添加到php.ini(如果这是共享托管和您没有访问php.ini然后你可以添加到.user.ini在public_html)

curl.cainfo=/path/to/downloaded/cacert.pem

3)默认情况下,FastCGI进程将每隔300秒解析新文件(如果需要,您可以通过添加几个文件来更改频率,如这里建议的https://ss88.uk/blog/fast-cgi-and-user-ini -files-the-new-htaccess /)
———————
作者:戒烟的不耳
来源:CSDN
原文:https://blog.csdn.net/buer2202/article/details/75364589
版权声明:本文为博主原创文章,转载请附上博文链接!

手工配置 ApplicationInitialization For IIS 7.5

悠然见南山阅读(118)评论(0)

解决 iis 重启后,首次访问系统很慢的问题
此方法仅适用 iis7.5 处理步骤如下: 1.下载 ApplicationInitialization。 2.安装完成后,设置 IIS。 A.找到 C:\Windows\System32\inetsrv\config\,打开 applicationHost
在文件中找<applicationPools>节,找到应用程序池名称.NET v4.5,将 automode 属性去

掉,改成 startMode=”AlwaysRunning”,如下所示:

<add name=”.NET v4.5″ startMode=”AlwaysRunning” managedRuntimeVersion=”v4.0″ />
在文件中找到<sites> ,网站名称 EPC,应用名称为 appinit,增加属性

preloadEnabled=”true”,如下所示:

<site name=”EPC” id=”2″ serverAutoStart=”true”><application path=”/appinit” preloadEnabled=”true” applicationPool=”.NET v4.5″>

B.设置应用的 webconfig,在<system.webserver>中增加下面的内容: <applicationInitialization remapManagedRequestsTo=”userlogin2.aspx” skipManagedModules=”true” > <add initializationPage=”/userlogin2.aspx” /> </applicationInitialization>

注意:上述设置只针对单个应用。IIS 部署了多少应用就需要设置多少次。

Mysql:InnoDB: The log sequence number in ibdata files does not match

悠然见南山阅读(56)评论(0)

一日,公司笔记本升级防火墙,于是备份所有文件后交IT处理。
再拿到手上,就是一台重新装了系统的笔记本了。
这时才想起来mysql没有做导出,但是由于备份了所有数据文件,应该有办法恢复回来。
操作如下—
1.重新安装了相同版本的Mysql,并选择相同的引擎INNODB。
2. 关掉Mysql服务,将原data文件夹覆盖新装的data文件夹,启动失败报错1067
3.于是保留data文件夹里的ibdata1文件,其他覆盖掉。
4.启动Mysql,查询发现database都在了,任选了一个db,查询tables也都在。心说大功告成。
5.启动应用,报错提示表找不到。
6.命令行连到数据库上,show databases结果正确,show tables结果正确,desc [table]失败,提示table找不到。
7.后来才知道innodb引擎的数据还是存储在ibdata1中的,虽然那些frm文件和database文件夹都在,但是好像数据并不保存在这些文件里。
8.查找网络,提示先添加my.ini中 innodb_force_recovery=4, 启动服务,在删除该配置。
于是照做,成功。
步骤如下—
1. shutdown mysql
2. modify my.ini, add record “innodb_force_recovery=4”
3. start up mysql service
4. connect mysql, show databases is correct, show tables is correct, desc [table] results correct.
5. It succeeds. Thank God.
6. stop mysql, remove record “innodb_force_recovery=4”, start up mysql
7. start application, everything goes well.
In fact, I am not sure whether it will work if we don’t add “innodb_force_recovery=4”, hope someone tried.

PHP 5.6 中 Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version

悠然见南山阅读(36)评论(0)

在使用数组转换为XML 时,出现这种错误

Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version。

特别是在微信开发的时候,字符串转换成XML时,有可能导致这种问题。

 

解决方法

找到php.ini  文件, 把always_populate_raw_post_data  修改为-1 就行了。

always_populate_raw_post_data=-1

解决iis重启后,首次访问系统很慢的问题 

悠然见南山阅读(95)评论(0)

解决iis重启后,首次访问系统很慢的问题

此方法仅适用iis7.5 处理步骤如下:
1.下载ApplicationInitialization。 2.安装完成后,设置IIS。
A.找到C:\Windows\System32\inetsrv\config\,打开applicationHost

在文件中找<applicationPools>节,找到应用程序池名称.NET v4.5,将automode属性去
掉,改成startMode=”AlwaysRunning”,如下所示:

<add name=”.NET v4.5″ startMode=”AlwaysRunning” managedRuntimeVersion=”v4.0″ />

在文件中找到<sites> ,网站名称EPC,应用名称为appinit,增加属性
preloadEnabled=”true”,如下所示:

<site name=”EPC” id=”2″ serverAutoStart=”true”><application path=”/appinit” preloadEnabled=”true” applicationPool=”.NET v4.5″>

B.设置应用的webconfig,在<system.webserver>中增加下面的内容:
<applicationInitialization  remapManagedRequestsTo=”userlogin2.aspx”

skipManagedModules=”true” >

<add initializationPage=”/userlogin2.aspx” />

</applicationInitialization>

IIS7.5也有Warm Up功能 让ASP.NET第一次Request不变慢

悠然见南山阅读(116)评论(0)

页开发者早期最常遇到一个问题,当网站布署到IIS时候,每当IIS或是Application Pool重启后,第一位进入网站的使用者,其体验往往第一个反应就是网站很慢,然后就一直询问IT为什么网站这么慢。但是,IT再去确认之后,网页速度又没有问题,虽然这问题看似不是很大问题,不过,有时企业内部网站,会因为在Web Site 初始化时候进行一堆设定跟Loading Data,这样等待时间就不会是几秒而已了。因此,早期在IIS7.0以前为了避免这不友善的使用者体验,通常都会自行撰写Warm Up功能,这种功能大都是仿真使用者第一次登入动作,让真正第一次使用者对于IIS来说是第二次的Request来解决这问题。

自从Windows 2012出来之后,这部分Application Initialization功能已经有内含在IIS8之中,可以直接进行设定就可以。

 

不过,在大部分的企业用户中并不可能这么快都使用Windows 2012,大都还停留在IIS6或是IIS7.X的时代,不过,目前微

软针对Windows R2的IIS7.5,Release Warm Up的模块叫做Application Initialization Module for IIS 7.5,让在IIS 7.5也可

以有此功能,让我们透过外挂模块就可以轻松拥有Warm Up机制。

官方下载网址:http://www.iis.net/downloads/microsoft/application-initialization

 

下载完毕,点击两下就可以开始安装。

 

基本上安装速度很快,一下就可以安装完毕,安装完毕后会要求重新开机,因此,在安装时须注意此主机这个时段可以重新 www.it165.net

开机不然就会很糗了


原则上安装模块完毕后,因该在IIS中会出现Warm Up图标控件,让我们去设定。但是,我在这边安装了几台都没有出

现这控件可以进行网站设定。甚至连安装在Win7上也没有出现控件。不过,若是去IIS模块列表中,却又可以看到已

经确实有安装了Application Initialization模块,可供使用。

 

为了解决此问题,又必须再去安装Application Initialization for UI,才有办法让IIS出现UI可以进行设定,安装档请参阅附档

下载。安装完毕后,在IIS控制置模块中会出现一个Application Initialization图示,此时我们就可以开始设定了

 

Warm Up设定方式满简单的,可以针对Application Pool层级或是Web Site层级两者进行设定

1.Application Pool层级:只要有需要的Application Pool的Start Mode设定AlwaysRunning就可以

 

2.Web Site层级:选择你们要做Preload的Web Site。

 

选择好Web Site之后,记得下图红框地方要打勾,才有办法进行Warm Up功能。

 

以上都设定好之后,来进行试验一下。分别测试有无Warm Up的Web Site对于第一个Request的反应,当所有Web Site都

重新启动,模拟第一位User进入此网站

无设定Warm Up的Web Site

 

有设定Warm Up的Web Site

 

从上图的比较发现,有无Warm Up对于网站的反应是有差别的。

Application Initialization for UI :http://www.it165.net/uploadfile/2013/0601/20130601104150404.zip

IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案

悠然见南山阅读(28)评论(0)

找到Web站点对应的应用程序池,“应用程序池” → 找到对应的“应用程序池” → 右键“高级设置…”

一、一般优化方案

  1、基本设置

[1] 队列长度: 默认值1000,将原来的队列长度改为 65535。

[2] 启动32位应用程序:默认值False,改为True, 否则安装一些32的组建或32位的php都会出错。

[3] 托管管道模式:Integrated 或 Classsic。


  2、高级设置

  [1] 闲置超时(分钟):默认20分钟,修改设长。

[2] 快速故障防护 → 已启用 :默认True,改为False。

  3、解决PEP第一次打开PEP速度慢

回收间隔时间

使用windows server 2008 r2解决回收假死的问题

打开应用程序池 -> 高级设置 ->在“禁止重叠回收”里选择“true”,这样就有效避免了应用程序池回收假死问题。

二、支持同时10万个请求

通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅。

站点碰到如下问题:

Error Summary:

HTTP Error 503.2 – Service Unavailable
The serverRuntime@appConcurrentRequestLimit setting is being exceeded.

Detailed Error Information:

Module IIS Web Core
Notification BeginRequest
Handler StaticFile

Error Code 0x00000000

由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,从而出现了上面的错误。

为了避免这样的错误,我们根据相关文档调整了设置,让服务器从设置上支持10万个并发请求。

具体设置如下:

  1. 调整IIS 7应用程序池队列长度

将原来的队列长度由默认值 1000 改为 65535。当然这里的队列长度你可以根据自己的 访问用户*1.5 来设置,例如:有2000用户,此处就可以设置为3000(3000=2000用户数*1.5)。

  2.  调整IIS 7的appConcurrentRequestLimit设置

由原来的默认5000改为100000。

[1] 在cmd中执行:

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

[2] 在%systemroot%\System32\inetsrv\config\applicationHost.config中可以查看到该设置:

<serverRuntime appConcurrentRequestLimit=”100000″ />

  3. 调整machine.config中的processModel>requestQueueLimit的设置

[1] 单击“开始”,然后单击“运行”,或者 windows + R。

[2] 在“运行”对话框中,键入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然后单击“确定”。(不同的.NET版本路径不一样,可以选择你自己当前想设置的.NET版本的config)

[3] 找到如下所示的 processModel 元素:<processModel autoConfig=”true” />

[4] 将 processModel 元素替换为以下值:<processModel enable=”true” requestQueueLimit=”15000″ />

[5] 保存并关闭 Machine.config 文件。
由原来的默认5000改为100000。

<configuration>
    <system.web>
        <processModel enable="true" requestQueueLimit="100000"/>

参考文章:http://technet.microsoft.com/en-us/library/dd425294(office.13).aspx

  4. 修改注册表,调整IIS 7支持的同时TCPIP连接数

由原来的默认5000改为100000。在cmd中执行:

reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000

可在注册表中查看

  5. 运行命令使用设置生效

net stop http  & net start  http & iisreset

完成上述5个设置,就可以支持10万个并发请求,博客园博客服务器已经启用上述设置。

为了方法大家与自己使用,我把上面能用bat操作简单放到一个bat文件里面了。将下面的内容保存为do.bat文件运行就可以了,需要手工的自己操作

三、支持高并发的IIS Web服务器常用设置

适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0

适用的Windows Server版本:Windows Server 2008, Windows Server 2008 R2, Windows Server 2012

  1、应用程序池(Application Pool)的设置:

[1] General->Queue Length设置为65535(队列长度所支持的最大值)
[2] Process Model->Idle Time-out设置为0(不让应用程序池因为没有请求而回收)
[3] Recycling->Regular Time Interval设置为0(禁用应用程序池定期自动回收)

  2、.Net Framework相关设置

[1] 在machine.config中将
< processModel autoConfig=”true” />

改为

<processModel enable=”true” requestQueueLimit=”100000″/>

(保存后该设置立即生效)

[2] 打开C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers\Default.browser,找到<defaultBrowser id=”Wml” parentID=”Default” >,注释<capabilities>部分,然后在命令行中运行aspnet_regbrowsers -i。以解决text/vnd.wap.wml问题。

设置命令:

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000
设置结果:
< serverRuntime appConcurrentRequestLimit=”100000″ />

(保存后该设置立即生效)

  4、http.sys的设置

注册表设置命令1(将最大连接数设置为10万):
reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000

注册表设置命令2(解决Bad Request – Request Too Long问题):

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxFieldLength /t REG_DWORD /d 32768
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxRequestBytes /t REG_DWORD /d 32768

(需要在命令行运行 net stop http  & net start http & iisreset 使设置生效)

  5、针对负载均衡场景的设置

在Url Rewrite Module中增加如下的规则:

注意事项:添加该URL重写规则会造成IIS内核模式缓存不工作,详见微软的坑:Url重写竟然会引起IIS内核模式缓存不工作。

  6、 设置Cache-Control为public

在web.config中添加如下配置:

复制代码
<configuration>
 <system.webServer>
  <staticContent>
   <clientCache cacheControlCustom="public" />
  </staticContent>
 </system.webServer>
</configuration>
复制代码

在machine.config的<processModel>中添加如下设置:

< processModel enable="true" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" minIoThreads="50"/>

更专业 更方便

联系我们联系我们