蘋果上架要求:要求支持IPV6only(因為阿里云主機沒有IPV6only)
確認IPV6是否開啟:
方式1:使用ifconfig查看自己的IP地址是否含有IPv6地址。


方式2.查看服務監聽的IP中是否有IPv6格式的地址。(netstat -tuln)

開啟IPV6:
vim /etc/sysctl.conf

vim /etc/modprobe.d/disable_ipv6.conf

vim /etc/sysconfig/network

至此ipv6的服務器端支持已經完成,重啟服務器測試是否支持ipv6,重啟后, ifconfig查看ipv6的信息,有看到有關IPV6的輸出就可以

添加ipv6隧道:
1. 注冊Tunnel broker
https://www.tunnelbroker.net/
注冊很容易,就不講了,注冊需要郵箱驗證,,gmail、163能收得到認證郵件,qq還是一樣收不到
2.創建通道“Create Regular Tunnel”
填寫云服務器ip以及選擇默認的隧道節點,點擊Create Tunnel創建。填寫ip都,如果出現“IP is a potential tunnel endpoint.”則證明可以添加ipv6隧道,一般隧道節點系統已經默認分配,可以手動選擇,大家可以在自己的云服務器上分別ping一下這些ip,選時延低的。

3.創建ipv6隧道及路由
到下一頁面切換到Example configurations選項卡,如果你的VPS是centOS/Debian這些常見Linux的話,下拉菜單選擇Linux-route2,出現了設置的命令,復制到自己的云服務器上運行。

4.測試ipv6

添加ipv6的dns服務器,在最后添加nameserver 2001:4860:4860::8888,nameserver 2001:4860:4860::8844谷歌的ipv6 dns服務器
# vim /etc/resolv.conf
options timeout:1 attempts:1 rotate
nameserver x.x.x.x
nameserver x.x.x.x
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
# ping6 -c 5 ipv6.google.com
PING ipv6.google.com(tsa03s01-in-x0e.1e100.net) 56 data bytes
64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=1 ttl=55 time=25.5 ms
64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=2 ttl=55 time=25.5 ms
64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=3 ttl=55 time=33.1 ms
64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=4 ttl=55 time=25.5 ms
64 bytes from tsa03s01-in-x0e.1e100.net: icmp_seq=5 ttl=55 time=25.4 ms
--- ipv6.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4031ms
rtt min/avg/max/mdev = 25.473/27.040/33.180/3.073 ms
阿里云服務配置
代理配置好之后服務器中執行ifconfig命令,找到he-ipv6虛擬網卡,找到scope為Global 的ipv6地址,在阿里云后臺配置AAAA記錄為上面提到的ipv6地址

阿里云文檔:https://help.aliyun.com/knowledge_detail/39813.html在線測試:https://zh.infobyip.com/ping-ipv6.google.com-ipv6.html
6.1AppStore發布之后的應用要兼容IPv6。
然而我上個星期發布的版本并沒有因為沒兼容而被拒,這次提交卻遇到IPv6兼容問題。。。
話不多說,上代碼:
+(NSString *) getIPWithHostName:(const NSString *)hostName
{
struct addrinfo * result;
struct addrinfo * res;
char ipv4[128];
char ipv6[128];
int error;
BOOL IS_IPV6 = FALSE;
bzero(&ipv4, sizeof(ipv4));
bzero(&ipv4, sizeof(ipv6));
error = getaddrinfo([hostName UTF8String], NULL, NULL, &result);
if(error != 0) {
NSLog(@"error in getaddrinfo:%d", error);
return nil;
}
for(res = result; res!=NULL; res = res->ai_next) {
char hostname[1025] = "";
error = getnameinfo(res->ai_addr, res->ai_addrlen, hostname, 1025, NULL, 0, 0);
if(error != 0) {
NSLog(@"error in getnameifno: %s", gai_strerror(error));
continue;
}
else {
switch (res->ai_addr->sa_family) {
case AF_INET:
memcpy(ipv4, hostname, 128);
break;
case AF_INET6:
memcpy(ipv6, hostname, 128);
IS_IPV6 = TRUE;
default:
break;
}
NSLog(@"hostname: %s ", hostname);
}
}
freeaddrinfo(result);
if(IS_IPV6 == TRUE) return [NSString stringWithUTF8String:ipv6];
return [NSString stringWithUTF8String:ipv4];
}
這段代碼即判斷了是否IPv6環境并解析域名獲得了IP地址。
測試
首先得配置IPv6網絡環境,至于如何配置,自行百度"如何搭建IPv6的測試環境"。
然而配置成功后,用手機連接的WiFi DNS也是正確的,運行程序測試怎么不成功呢,找了好多資料,猜測是DNS解析出了問題。
那就換另一種方法配置IPv6:拔掉網線,用mac連接WiFi(沒有WiFi可以用手機流量分享熱點),然后在共享中用前一種方法配置IPv6(不知道具體是共享到電腦那個端口,索性全點上),記得選中"創建NAT64 網絡"。這時直接通過模擬器測試succeed!
測試成功了。你以為就沒問題了?這里提交依然可能被拒,手機和 Mac 之間是 IPv6 沒錯,但 Mac 和你的服務器之間還是 IPv4 連接。
如果這項測試通過,可以說明:你的客戶端應用在 IPv6 網絡下,是(基本)沒有問題的,但是無法驗證你的服務器能夠對 IPv6 網絡做出正確的響應。然而,蘋果審核的時候,卻是要去 DNS 服務器詢問你的服務器的 IPv6 地址,然后進行訪問。如果查詢不到 IPv6 地址,可能會進而詢問 IPv4 地址,然后進行轉換使用。蘋果明確表示服務器不需要支持 IPv6,但是有一點蘋果沒有指出來,那就是,雖然你的服務器不用支持 IPv6,但是必須正確響應 IPv6 的 DNS 查詢。
如何驗證呢??使用以下命令即可:
- $ dig +nocmd +nostats example.com AAAA
如果返回的 status 為 NOERROR, 那基本就沒什么問題,但是一定要在多個網絡環境下測試都通過才行。如果返回的是其他的響應,尤其是 SERVFAIL 的情況,那就基本杯具了。由于你已經驗證了客戶端沒有問題,現在要做的,就是催著你的運維、后臺啥的,趕緊去改 DNS 配置,直到穩定返回 NOERROR 為止。
其他參考:
http://blog.csdn.net/nil_lu/article/details/53809893 關于阿里云HTTPS協議的相關支持
一、獲取HTTPS安全證書
在操作之前,請將你的域名的隱私保護去掉,讓證書服務商能通過域名解析查看到域名管理者的郵箱,否則驗證證書時會無法進行。
登錄阿里云管理控制臺,【云盾】菜單選擇【證書服務】

選擇購買證書

在購買頁面,選擇WoSign,沃通,免費版,多個域名,域名個數5個,1年。
目前沃通停了免費的證書服務,只有賽門鐵克支持,大家按著沃通的方式來做吧,賽門鐵克的流程我就不貼了。
一幫商人!其實對于一個小網站來說,阿里應該跟騰訊一樣,來個免費的證書服務,而不是通過接入第三方把這個小錢賺了

確認訂單,支付,


付款完成后,到我的訂單里,可以看到剛剛買的服務,點擊【信息補全】按鈕,將你的網站地址輸入,一般輸入一個不帶www.的和一個帶www.的兩個域名。


如果你進入的是詳情頁就到你郵箱中看看阿里云給你發的郵件(郵箱是阿里云注冊時用的郵箱)

如果直接進入沃通網站進行信息補全就是這個界面:選擇【驗證域名所有權(待完成)】

需要發送郵件到郵箱獲取驗證碼,我的主機在購買時,送了我一個企業郵箱,所以就直接用域名對應的郵箱了,如果你沒有域名郵箱,建議將域名保護關閉,然后再驗證。當然,你還可以通過域名解析的方式處理。

如果能通過郵件獲取驗證碼,基本上,當時就可以下發證書。回到阿里云證書服務,可以看到訂單狀態。在我的證書標簽頁,如果看到申請的證書,就說明可以使用了。

對于已簽發的證書,我們就可以下載,下載后解壓得到兩個文件,一個key結尾,是私鑰,一個pem結尾,是公鑰。

二、配置HTTPS證書
到阿里云管理控制臺【CDN】的【CDN域名列表中】,添加一個新的域名,選擇圖片小文件加速,類型IP,然后將阿里云虛擬主機的IP輸入。端口一定選擇80,不要選擇443

添加完成后,我們進行管理,開啟證書狀態,將剛才的pem結尾的公鑰用文本編輯器打開,拷貝內容,粘貼到【證書內容】中。將私鑰拷貝,粘貼到私鑰中。
注意:公鑰的內容中-----END CERTIFICATE-----
和-----BEGIN CERTIFICATE-----
之間是有空行的,需要將空行去掉
... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...
改成
... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...
另外需要將跳轉類型設置為HTTP->HTTPS

另外需要記住CNAME:
CNAME: www.aitongyi.com.w.cab.com
因為下一步我們需要到域名管理控制臺去修改網站的域名綁定信息。
CDN的基本信息配置完成后,我們需要解析緩存配置,就是告訴CDN,緩存那些內容。
如果是阿里的免費虛擬主機,除了將html、css、js、png、jpg、ico等文件緩存外,一般會將整個css或者js目錄緩存,因為有的js文件未來便于處理,都是用.jsv1.0.0
來做結尾,避免js文件更新后無法獲取最新版本。
由于我是Hexo生成的靜態網站,所以可以將整個網站目錄進行緩存。

三、域名綁定
在阿里云管理控制臺中【域名】的【域名列表】點擊域名的【管理】按鈕,進入域名管理控制臺。將原來的記錄類型【A】,主機記錄為www
的解析修改一個為CNAME記錄類型,將記錄值修改為剛才的www.aitongyi.com.w.cab.com
這個地址,保存即可。

下一步我就就是在瀏覽器中輸入:www.aitongyi.com
,網站就會自動跳轉到https://www.aitongyi.com/
大功告成!
如果你的網站沒有跳轉到https或者網站請求沒有反應,請等待10分鐘左右,一般是設置沒有及時生效導致的。

posted on 2017-04-14 12:31
思月行云 閱讀(5223)
評論(0) 編輯 收藏 引用 所屬分類:
服務器\Ops