【MySQL】關(guān)于MySQL開(kāi)啟SSL的服務(wù)端和客戶端設(shè)置

一礁叔、用MySQL鏡像安裝MySQL


#? docker? pull??mysql:8.0

# mkdir? ?-p? /opt/mysqldata? ?/opt/mysqlconfig? ?/opt/sql


#? vim /opt/mysqlconfig/mysqld.cnf

#######################################################

[mysqld]

pid-file? ? ? ? ? ? ? ? ? ? ? ? = /var/run/mysqld/mysqld.pid

socket? ? ? ? ? ? ? ? ? ? ? ? ? = /var/run/mysqld/mysqld.sock

datadir? ? ? ? ? ? ? ? ? ? ? ? = /var/lib/mysql

symbolic-links? ? ? ? ? ? ? ? ? = 0

max_connections? ? ? ? ? ? ?= 2000

user? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = mysql

skip_name_resolve

skip-host-cache

skip-log-bin

character-set-client-handshake? = FALSE

lower_case_table_names? ? ? ? ? = 1

character-set-server? ? ? ? ? ? = utf8

collation-server? ? ? ? ? ? ? ? = utf8_general_ci

init_connect? ? ? ? ? ? ? ? ? ? = "SET NAMES 'utf8'"

default_authentication_plugin? = mysql_native_password

general_log? ? ? = on

general_log_file? = /var/lib/mysql/general.log

log_timestamps? ? = SYSTEM


[mysql]

default-character-set? ? ? ? ? = utf8


[client]

default-character-set? ? ? ? ? = utf8

#######################################################



二祟绊、初始化MySQL


# vim mysql8.x_init.sh

###################################################

#!/bin/bash

mysql_ver="8.0"

mysql_datadir="/opt/mysqldata"

mysql_root_pwd="MySQL@123"

registry_addr=""

docker run -itd? \

? --name mysql \

? -p 3306:3306 \

? -e UMASK=0600 \

? -e UMASK_DIR=0700 \

? -e MYSQL_HISTFILE=/dev/null \

? -v ${mysql_datadir}:/var/lib/mysql \

? -v /opt/mysqlconfig/mysqld.cnf:/etc/mysql/conf.d//mysqld.cnf \

? -e MYSQL_ROOT_PASSWORD="${mysql_root_pwd}" \

? mysql:${mysql_ver}

sleep 30

if ss -tan | grep -w "3306" > /dev/null 2>&1; then

? docker stop mysql

? docker rm? mysql

? echo "Mysql init successfully!"

else

? echo "Mysql init failed!"

fi

###################################################



# sh??mysql8.x_init.sh



將MySQL服務(wù)注冊(cè)成系統(tǒng)服務(wù)


# cat /etc/systemd/system/mysqld.service

####################################################

[Unit]

Description=MySQL Server

After=network-online.target docker.service

Requires=docker.service

[Service]

Type=simple

ExecStartPre=-/usr/bin/docker rm -f mysql

ExecStart=/usr/bin/docker run \

? --name mysql \

? -p 3306:3306 \

? -e UMASK=0600 \

? -e UMASK_DIR=0700 \

? -e MYSQL_HISTFILE=/dev/null \

? -v /opt/mysqldata:/var/lib/mysql \

? -v /opt/mysqlconfig/mysqld.cnf:/etc/mysql/conf.d//mysqld.cnf \

? -v /opt/sql:/opt/sql \

? -v /etc/localtime:/etc/localtime \

? --security-opt seccomp=unconfined \

? mysql:8.0

ExecStop=/usr/bin/docker stop mysql

LimitNOFILE=65535

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

####################################################



# systemctl daemon-reload

# systemctl start mysqld

# systemctl enable mysqld

# systemctl status mysqld


二、MySQL 不開(kāi)啟SSL


# cat /opt/mysqlconfig/mysqld.cnf

#######################################################

[mysqld]

pid-file? ? ? ? ? ? ? ? ? ? ? ? = /var/run/mysqld/mysqld.pid

socket? ? ? ? ? ? ? ? ? ? ? ? ? = /var/run/mysqld/mysqld.sock

datadir? ? ? ? ? ? ? ? ? ? ? ? = /var/lib/mysql

symbolic-links? ? ? ? ? ? ? ? ? ? ? = 0

max_connections? ? ? ? ? ? ? ? = 2000

user? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= mysql

skip_name_resolve

skip-host-cache

skip-log-bin

character-set-client-handshake? = FALSE

lower_case_table_names? ? ? ? ? = 1

character-set-server? ? ? ? ? ? = utf8

collation-server? ? ? ? ? ? ? ? = utf8_general_ci

init_connect? ? ? ? ? ? ? ? ? ? = "SET NAMES 'utf8'"

default_authentication_plugin? = mysql_native_password

general_log? ? ? = on

general_log_file? = /var/lib/mysql/general.log

log_timestamps? ? = SYSTEM


[mysql]

default-character-set? ? ? ? ? = utf8


[client]

default-character-set? ? ? ? ? = utf8

########################################################


后臺(tái)通過(guò)socket登錄

# docker exec -it mysql mysql -u root -p"MySQL@123"


可以看出戳气,后臺(tái)通過(guò)socket登錄怨愤,是沒(méi)有走加密通道的杏瞻。


后臺(tái)通過(guò)127.0.0.1登錄

# docker exec -it mysql mysql? ?-h 127.0.0.1? ?-u root -p"MySQL@123"

可以看出符欠,后臺(tái)通過(guò)127.0.0.1登錄嫡霞,是加密的。



客戶端遠(yuǎn)程登錄 192.18.1.104? -----> 192.168.1.100:3306



# tail -f /opt/mysqldata/general.log

可以看出背亥,在不開(kāi)啟MySQL SSL 的情況下秒际,客戶端連接服務(wù)端悬赏,是走TCP/IP狡汉,沒(méi)有加密通道。


MySQL不開(kāi)啟SSL 的jdbc


MySQL驅(qū)動(dòng)

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://xx.xx.xx.xx:3306/test?allowMultiQueries=true&useUnicode&characterEncoding=UTF-8&autoReconnect=true&useSSL=false

username=root

password=MySQL@123


MariaDB驅(qū)動(dòng)

driverClassName=org.mariadb.jdbc.Driver

url=jdbc:mariadb://xx.xx.xx.xx:3306/test?allowMultiQueries=true&useUnicode&characterEncoding=UTF-8&autoReconnect=true&useSSL=false

username=root

password=MySQL@123



三闽颇、MySQL 開(kāi)啟SSL


# vim /opt/mysqlconfig/mysqld.cnf

#############################################################

[mysqld]

pid-file? ? ? ? ? ? ? ? ? ? ? ? ? = /var/run/mysqld/mysqld.pid

socket? ? ? ? ? ? ? ? ? ? ? ? ? ?= /var/run/mysqld/mysqld.sock

datadir? ? ? ? ? ? ? ? ? ? ? ? ? ?= /var/lib/mysql

symbolic-links? ? ? ? ? ? ? ? ? = 0

max_connections? ? ? ? ? ? ?= 2000

user? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = mysql

skip_name_resolve

skip-host-cache

skip-log-bin

character-set-client-handshake? = FALSE

lower_case_table_names? ? ? ? ? ? = 1

character-set-server? ? ? ? ? ? = utf8

collation-server? ? ? ? ? ? ? ? ? ? = utf8_general_ci

init_connect? ? ? ? ? ? ? ? ? ? ? ? ?= "SET NAMES 'utf8'"

default_authentication_plugin? = mysql_native_password

general_log? ? ? = on

general_log_file? = /var/lib/mysql/general.log

log_timestamps? ? = SYSTEM


require_secure_transport = ON

ssl-ca? ? ? ? ? ? ? ? ? = /var/lib/mysql/ca.pem

ssl-cert? ? ? ? ? ? ? ? = /var/lib/mysql/server-cert.pem

ssl-key? ? ? ? ? ? ? ? ? = /var/lib/mysql/server-key.pem


[mysql]

default-character-set? ? ? ? ? = utf8


[client]

default-character-set? ? ? ? ? = utf8

#############################################################



# systemctl? restart mysqld??

# ll /opt/mysqldata/*.pem




后臺(tái)通過(guò)socket登錄

# docker exec -it mysql mysql -u root -p"MySQL@123"

可以看出盾戴,后臺(tái)通過(guò)socket登錄,是沒(méi)有走加密通道的兵多。


后臺(tái)通過(guò)127.0.0.1登錄

# docker exec -it mysql mysql??-h 127.0.0.1??-u root -p"MySQL@123"


可以看出尖啡,后臺(tái)通過(guò)127.0.0.1登錄,是加密通的剩膘,但是沒(méi)有啟動(dòng)SSL衅斩。


客戶端遠(yuǎn)程登錄 192.18.1.104? -----> 192.168.1.100:3306



# tail -f /opt/mysqldata/general.log


可以看出,在開(kāi)啟MySQL SSL 的情況下怠褐,客戶端連接服務(wù)端畏梆,走加密通道。



四奈懒、MySQL 開(kāi)啟SSL奠涌,客戶端jdbc的幾種設(shè)置


關(guān)于開(kāi)啟 MySQL SSL,客戶端dbc的設(shè)置分以下幾種情況:

1. 服務(wù)端開(kāi)啟SSL磷杏,配置證書(shū)溜畅,客戶端連服務(wù)端,直接信任證書(shū)极祸,不用配置證書(shū)

2. 服務(wù)端開(kāi)啟SSL慈格,配置證書(shū),客戶端連服務(wù)端遥金,配置單向驗(yàn)證客戶端或者服務(wù)端證書(shū)

3. 服務(wù)端開(kāi)啟SSL浴捆,配置證書(shū),客戶端連服務(wù)端汰规,配置雙向驗(yàn)證服務(wù)端證書(shū)和客戶端證書(shū)



MySQL Server端是 x509 的pem格式證書(shū)汤功,怎么跟客戶端的 java程序(要連MySQL,jks格式證書(shū))建立證書(shū)認(rèn)證關(guān)系溜哮?

x509 的 pem格式證書(shū)滔金,可以通過(guò)轉(zhuǎn)換色解,變成 jks格式證書(shū)。



1. 服務(wù)端開(kāi)啟SSL餐茵,配置證書(shū)科阎,客戶端連服務(wù)端,直接信任證書(shū)忿族,不用配置證書(shū)

MySQL驅(qū)動(dòng)

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://xx.xx.xx.xx:3306/test?allowMultiQueries=true&useUnicode&characterEncoding=UTF-8&autoReconnect=true&useSSL=true&verifyServerCertificate=false&requireSSL=true

username=root

password=MySQL@123


MariaDB驅(qū)動(dòng)

driverClassName=org.mariadb.jdbc.Driver

url=jdbc:mariadb://xx.xx.xx.xx:3306/test?allowMultiQueries=true&useUnicode&characterEncoding=UTF-8&autoReconnect=true&useSSL=true&trustServerCertificate=true&requireSSL=true

username=root

password=MySQL@123


關(guān)于證書(shū)信任設(shè)置

MySQL:? ? verifyServerCertificate=false

MariaDB:? trustServerCertificate=true


當(dāng)啟用SSL加密并設(shè)置連接字符串屬性trustServerCertificate=false 時(shí)需要做些什么锣笨,與設(shè)置trustServerCertificate=true 有什么區(qū)別?

如果當(dāng)使用安全套接字層 (SSL) 對(duì)通信層加密時(shí)應(yīng)自動(dòng)信任服務(wù)器安全套接字層證書(shū)道批,則為“true” 错英, 否則為 false。

此處隆豹,我們服務(wù)端椭岩,不設(shè)置證書(shū)驗(yàn)證,為自動(dòng)信任服務(wù)器安全套接字層證書(shū)璃赡。




2. 服務(wù)端開(kāi)啟SSL判哥,配置證書(shū),客戶端連服務(wù)端碉考,配置單向驗(yàn)證客戶端或者服務(wù)端證書(shū)


在 MySQL Server服務(wù)器上

#? mkdir? /root/mysqlSSL

# cp /opt/mysqldata/*.pem? ? ?/root/mysqlSSL/



#? keytool -importcert -alias MySQLCACert? -file ca.pem??-keystore truststore.jks? ?-storepass Truststore@123? ?-noprompt

# keytool -v -list -keystore truststore.jks? -storepass? "Truststore@123"

將?truststore.jks拷貝到客戶端 塌计,假設(shè)文件路徑為 /opt/cert/truststore.jks


MySQL驅(qū)動(dòng)

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://xx.xx.xx.xx:3306/test?allowMultiQueries=true&useUnicode&characterEncoding=UTF-8&autoReconnect=true&useSSL=true&verifyServerCertificate=true&requireSSL=true&clientCertificateKeyStoreUrl=file:/opt/cert/truststore.jks&clientCertificateKeyStorePassword="Truststore@123"

username=root

password=MySQL@123


MariaDB驅(qū)動(dòng)

driverClassName=org.mariadb.jdbc.Driver

url=jdbc:mariadb://xx.xx.xx.xx:3306/test?allowMultiQueries=true&useUnicode&characterEncoding=UTF-8&autoReconnect=true&useSSL=true&trustServerCertificate=false&requireSSL=true&clientCertificateKeyStoreUrl=file:/opt/cert/truststore.jks&clientCertificateKeyStorePassword="Truststore@123"

username=root

password=MySQL@123


當(dāng)啟用SSL加密并設(shè)置連接字符串屬性trustServerCertificate=false 時(shí)需要做些什么,與設(shè)置trustServerCertificate=true 有什么區(qū)別侯谁?

如果當(dāng)使用安全套接字層 (SSL) 對(duì)通信層加密時(shí)應(yīng)自動(dòng)信任服務(wù)器安全套接字層證書(shū)锌仅,則為“true” , 否則為 false良蒸。

此處技扼,客戶端務(wù)端設(shè)置了證書(shū)驗(yàn)證,通過(guò)連接字符串屬性?clientCertificateKeyStoreUrl=file:/opt/cert/?truststore.jks 和 clientCertificateKeyStorePassword=?"Truststore@123"?驗(yàn)證服務(wù)器安全套接字層證書(shū)嫩痰。




3. 服務(wù)端開(kāi)啟SSL剿吻,配置證書(shū),客戶端連服務(wù)端串纺,配置雙向驗(yàn)證服務(wù)端證書(shū)和客戶端證書(shū)


#? keytool -importcert -alias?MySQLCACert??-file ca.pem??-keystore truststore.jks? ?-storepass?Truststore@123? ?-noprompt


# openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -name "mysqlclient" -passout pass:Keystore@123 -out client-keystore.p12


# keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 -srcstorepass "Keystore@123" -destkeystore keystore.jks? -deststoretype JKS -deststorepass "Truststore@123"



# keytool -v -list? -keystore truststore.jks? ??-storepass "Truststore@123"

# keytool -v -list? ?-keystore keystore.jks? ? ?-storepass "Truststore@123"





# cat ca.pem

# keytool -export? -alias mysqlcacert? -keystore truststore.jks --storepass "Truststore@123" -rfc

可以看出 丽旅,實(shí)際上事將CA證書(shū) ca.pem 導(dǎo)入到了 truststore.jks中。


# cat client-cert.pem

# keytool -export -alias mysqlclient??-keystore keystore.jks --storepass "Truststore@123" -rfc

可以看出纺棺,實(shí)際是將 客戶端證書(shū) client-cert.pem 導(dǎo)入到了 keystore.jks中榄笙,當(dāng)然也將 客戶端私鑰 client-key.pem 導(dǎo)入到了keystore.jks中,只是我們沒(méi)法直接從?keystore.jks 獲取私鑰內(nèi)容祷蝌。


注意: 此處?file:///path/to/file?等價(jià)于?file:/path/to/file? ?


?truststore.jks 和 keystore.jks 拷貝到客戶端 茅撞,假設(shè)文件路徑為??/opt/cert/truststore.jks? /opt/cert/keystore.jks


MySQL驅(qū)動(dòng)

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://xx.xx.xx.xx:3306/test?allowMultiQueries=true&useUnicode&characterEncoding=UTF-8&autoReconnect=true&verifyServerCertificate=true&useSSL=true&requireSSL=true&clientCertificateKeyStoreUrl=file:/opt/cert/keystore.jks&clientCertificateKeyStorePassword="Keystore@123"&trustCertificateKeyStoreUrl=file:/opt/cert/truststore.jks&trustCertificateKeyStorePassword="Truststore@123"

username=root

password=MySQL@123



MariaDB驅(qū)動(dòng)

driverClassName=org.mariadb.jdbc.Driver

url=jdbc:mariadb://xx.xx.xx.xx:3306/test?allowMultiQueries=true&useUnicode&characterEncoding=UTF-8&autoReconnect=true&trustServerCertificate=false&useSSL=true&requireSSL=true&clientCertificateKeyStoreUrl=file:/opt/cert/keystore.jks&clientCertificateKeyStorePassword="Keystore@123"&trustCertificateKeyStoreUrl=file:/opt/cert/truststore.jks&trustCertificateKeyStorePassword="Truststore@123"

username=root

password=MySQL@123


用“設(shè)置服務(wù)器身份驗(yàn)證”和“設(shè)置客戶端身份驗(yàn)證”中概述的步驟,以建立雙向雙向身份驗(yàn)證過(guò)程,在該過(guò)程中米丘,服務(wù)器和客戶端在建立連接之前先對(duì)彼此進(jìn)行身份驗(yàn)證剑令。

盡管上述典型設(shè)置在兩端都使用相同的CA證書(shū)進(jìn)行相互身份驗(yàn)證,但并非必須如此拄查。?

唯一的要求是吁津,在服務(wù)器中配置的CA證書(shū)必須能夠驗(yàn)證客戶端證書(shū),并且導(dǎo)入到客戶端信任庫(kù)中的CA證書(shū)必須能夠驗(yàn)證服務(wù)器證書(shū)堕扶。?

兩端使用的兩個(gè)CA證書(shū)可以不同碍脏。



綜上,我們可以看到:

客戶端不做認(rèn)證 稍算,直接信任證書(shū)典尾,客戶端無(wú)需配置證書(shū)

單向認(rèn)證(驗(yàn)證服務(wù)端或客戶端),客戶端只需要配置 truststore.jks(truststore-ca.jks或truststore-client.jks)?

雙向認(rèn)證(驗(yàn)證客戶端和者服務(wù)端)邪蛔,?客戶端需要配置truststore.jks(truststore-ca.jks)?和keystore.jks




五急黎、參考


關(guān)于MySQL的jdbc

http://www.reibang.com/p/599bc0e31fde


setTrustServerCertificate 方法?

https://docs.microsoft.com/zh-cn/sql/connect/jdbc/reference/settrustservercertificate-method-sqlserverdatasource?view=sql-server-2017


Steps to connect to an AWS RDS MySql server through SSL/TLS

https://developer.jboss.org/message/966980?_sscc=t


常用Keytool 命令

http://www.willrey.com/support/keytool_command.html


用keytool創(chuàng)建keystore和trustsotre文件

http://www.reibang.com/p/1b1c9cfa17a4

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市侧到,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淤击,老刑警劉巖匠抗,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異污抬,居然都是意外死亡汞贸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門印机,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)矢腻,“玉大人,你說(shuō)我怎么就攤上這事射赛《喔蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵楣责,是天一觀的道長(zhǎng)竣灌。 經(jīng)常有香客問(wèn)我,道長(zhǎng)秆麸,這世上最難降的妖魔是什么初嘹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮沮趣,結(jié)果婚禮上屯烦,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好驻龟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布甸箱。 她就那樣靜靜地躺著,像睡著了一般迅脐。 火紅的嫁衣襯著肌膚如雪芍殖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天谴蔑,我揣著相機(jī)與錄音豌骏,去河邊找鬼。 笑死隐锭,一個(gè)胖子當(dāng)著我的面吹牛窃躲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钦睡,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蒂窒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了荞怒?” 一聲冷哼從身側(cè)響起洒琢,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎褐桌,沒(méi)想到半個(gè)月后典勇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谜洽,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了板祝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悬嗓。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡顾稀,死狀恐怖博肋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赃春,我是刑警寧澤愉择,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站聘鳞,受9級(jí)特大地震影響薄辅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抠璃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一站楚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搏嗡,春花似錦窿春、人聲如沸拉一。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蔚润。三九已至,卻和暖如春尺栖,著一層夾襖步出監(jiān)牢的瞬間嫡纠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工延赌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留除盏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓挫以,卻偏偏與公主長(zhǎng)得像者蠕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掐松,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350