Openstack的Heat服務(wù)api支持HTTPS

背景Openstack Queens版本

需要Openstack的Heat服務(wù)api支持HTTPS,首先Openstack各服務(wù)默認(rèn)支持HTTP要能正常訪問憔披,然后支持HTTPS首先要有證書,證書的制作過程參考本人的另一篇博客侧馅。

自簽的SSL證書創(chuàng)建與驗證過程

創(chuàng)建endpoint

$ openstack endpoint create --region RegionOne \
  orchestration public https://controller:8004/v1/%\(tenant_id\)s

配置

將生成好的證書復(fù)制一份并且賦予權(quán)限

$ cp /root/ssl/self/* /etc/heat/self/

$ chown -R heat:heat /etc/heat/self/

修改/etc/heat/heat.conf

[heat_api]
bind_port = 8004
cert_file = /etc/heat/self/server.crt
key_file = /etc/heat/self/server.key

[clients_heat]
endpoint_type = publicURL
insecure = True
url = https://10.175.183.15:8004/v1/%(tenant_id)s

重啟服務(wù)

systemctl restart openstack-heat-api.service openstack-heat-api-cfn.service openstack-heat-engine.service

查看/var/log/heat/heat-api.log

看到請求變成https就可以了

eventlet.wsgi.server [-] (9705) wsgi starting up on https://0.0.0.0:8004
INFO heat.common.wsgi [-] Started child 9706
INFO eventlet.wsgi.server [-] (9706) wsgi starting up on https://0.0.0.0:8004
INFO heat.common.wsgi [-] Started child 9707
INFO eventlet.wsgi.server [-] (9707) wsgi starting up on https://0.0.0.0:8004

修改dashboard配置文件

正當(dāng)?shù)靡庵畷r發(fā)現(xiàn)dashboard訪問不了了志衍,好奇怪萍聊,也沒有報錯

# 監(jiān)控
journalctl -xf

# 發(fā)現(xiàn)如下報錯
Feb 20 03:14:27 controller heat-api[38517]: Traceback (most recent call last):
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib/python2.7/site-packages/eventlet/greenpool.py", line 88, in _spawn_n_impl
Feb 20 03:14:27 controller heat-api[38517]: func(*args, **kwargs)
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib/python2.7/site-packages/eventlet/wsgi.py", line 734, in process_request
Feb 20 03:14:27 controller heat-api[38517]: proto.__init__(sock, address, self)
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib64/python2.7/SocketServer.py", line 649, in __init__
Feb 20 03:14:27 controller heat-api[38517]: self.handle()
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib64/python2.7/BaseHTTPServer.py", line 340, in handle
Feb 20 03:14:27 controller heat-api[38517]: self.handle_one_request()
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib/python2.7/site-packages/eventlet/wsgi.py", line 339, in handle_one_request
Feb 20 03:14:27 controller heat-api[38517]: self.raw_requestline = self.rfile.readline(self.server.url_length_limit)
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib64/python2.7/socket.py", line 476, in readline
Feb 20 03:14:27 controller heat-api[38517]: data = self._sock.recv(self._rbufsize)
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib/python2.7/site-packages/eventlet/green/ssl.py", line 194, in recv
Feb 20 03:14:27 controller heat-api[38517]: return self._base_recv(buflen, flags, into=False)
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib/python2.7/site-packages/eventlet/green/ssl.py", line 227, in _base_recv
Feb 20 03:14:27 controller heat-api[38517]: read = self.read(nbytes)
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib/python2.7/site-packages/eventlet/green/ssl.py", line 139, in read
Feb 20 03:14:27 controller heat-api[38517]: super(GreenSSLSocket, self).read, *args, **kwargs)
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib/python2.7/site-packages/eventlet/green/ssl.py", line 113, in _call_trampolining
Feb 20 03:14:27 controller heat-api[38517]: return func(*a, **kw)
Feb 20 03:14:27 controller heat-api[38517]: File "/usr/lib64/python2.7/ssl.py", line 651, in read
Feb 20 03:14:27 controller heat-api[38517]: v = self._sslobj.read(len or 1024)
Feb 20 03:14:27 controller heat-api[38517]: SSLError: [SSL: SSL_HANDSHAKE_FAILURE] ssl handshake failure (_ssl.c:1822)

問題很清楚,heat-api改成https了屯蹦,dashboard認(rèn)證失敗维哈,于是開始研究httpd慈省,嘗試了很多地方配證書都失敗了论巍,最好在dashboard的配置文件中找到了問題解決辦法。

首先要先確認(rèn)有沒有安裝mod_ssl服務(wù)

$ vi /etc/openstack-dashboard/local_settings
# 修改
# Disable SSL certificate checks (useful for self-signed certificates):
OPENSTACK_SSL_NO_VERIFY = True

$ systemctl restart httpd.service

測試

在環(huán)境變量~/adminrc中加入,然后source一下
export OS_CACERT=/root/ssl/self/server.crt
CLI命令測試炕柔,正常輸出就可以把HEAT過去的http的8004相關(guān)的endpoint刪除了
$ openstack stack list

$ tail -f /var/log/heat/heat-api.log
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脑蠕,一起剝皮案震驚了整個濱河市购撼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谴仙,老刑警劉巖迂求,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異晃跺,居然都是意外死亡揩局,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門掀虎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凌盯,“玉大人付枫,你說我怎么就攤上這事〕墼酰” “怎么了阐滩?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長县忌。 經(jīng)常有香客問我掂榔,道長,這世上最難降的妖魔是什么症杏? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任装获,我火速辦了婚禮,結(jié)果婚禮上厉颤,老公的妹妹穿的比我還像新娘饱溢。我一直安慰自己,他們只是感情好走芋,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著潘鲫,像睡著了一般翁逞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溉仑,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天挖函,我揣著相機與錄音,去河邊找鬼浊竟。 笑死怨喘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的振定。 我是一名探鬼主播必怜,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼后频!你這毒婦竟也來了梳庆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤卑惜,失蹤者是張志新(化名)和其女友劉穎膏执,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體露久,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡更米,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了毫痕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片征峦。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡迟几,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出眶痰,到底是詐尸還是另有隱情瘤旨,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布竖伯,位于F島的核電站存哲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏七婴。R本人自食惡果不足惜祟偷,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望打厘。 院中可真熱鬧修肠,春花似錦、人聲如沸户盯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莽鸭。三九已至吗伤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間硫眨,已是汗流浹背足淆。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留礁阁,地道東北人巧号。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像姥闭,于是被迫代替她去往敵國和親丹鸿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容